0

重大变化

成立:

<binding name="EntityExtractionPortBinding" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>

在 app.config 中并在那里更改了所有超时,即使那样它也会抛出相同的异常。改变:

<binding name="EntityExtractionPortBinding" closeTimeout="00:60:00"
      openTimeout="00:60:00" receiveTimeout="00:60:00" sendTimeout="00:60:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>

调用 Web 服务时出现 TimeOut 异常。webservice部署在java中,我的客户端是ac#winform。Web服务部署在TOMCAT服务器上它在客户端给出以下异常:

请求通道在 00:00:56.9230000 之后等待回复时超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。

客户端异常:

System.TimeoutException 被捕获 Message=请求通道在 00:01:00 之后等待回复时超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。Source = mscorlib StackTrace:服务器堆栈跟踪:在 System.ServiceModel.Channels.RequestChannel.Request(消息消息,TimeSpan 超时)在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息消息,TimeSpan 超时)在 System.ServiceModel.Channels。 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, 已超过分配的超时时间 00:01:00。分配给此操作的时间可能是较长超时的一部分。Source=System.ServiceModel StackTrace:在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan 超时)在 System.ServiceModel.Channels 的 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest 请求,HttpAbortReason abortReason)。 Channels.RequestChannel.Request(消息消息,TimeSpan 超时) InnerException:System.Net.WebException 消息=操作已超时 Source=System StackTrace:位于 System.ServiceModel 的 System.Net.HttpWebRequest.GetResponse()。

通过 WSDL 访问 Web 服务。我的 app.config 中有以下代码

客户端的 app.config 中的代码

<endpoint address="http://localhost:8084/EntityExtraction/EntityExtraction"
    binding="basicHttpBinding" bindingConfiguration="EntityExtractionPortBinding"
    contract="DictionaryLookUp.EntityExtraction" name="EntityExtractionPort" />
4

3 回答 3

0

如果我了解您的超时设置少于 60 秒,或者您的网络服务只需要更多时间来处理查询并给出响应。增加请求超时或优化 Web 服务。

用SoapUI测试,webservice需要多长时间才能响应。

于 2012-09-28T11:05:14.913 回答
0

无法在 app.config 文件中输入任何值。但是,当我通过硬编码来增加超时值时,它确实起作用了:

DictionaryLookUp.EntityExtractionClient nlp = new 
                             DictionaryLookUp.EntityExtractionClient();
nlp.InnerChannel.OperationTimeout = new TimeSpan(0, 50, 0);
于 2012-10-19T09:13:27.547 回答
0

将超时设置为值 timeout="00:60:00" 时,我也有类似的经历。就像系统将其解释为 0 秒一样。如果需要,将值设置为“00:59:00”或“01:00:00”

于 2013-02-21T16:33:31.177 回答