小编use*_*014的帖子

在c#中增加WCF Web服务的超时

我目前有一个应用程序在服务器上调用Web服务进行搜索.我们可以期待返回大量数据,因此搜索花费的时间超过一分钟是常规的.

对于如此大量的搜索,我们一直在收到以下错误消息:

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

这是我们在StackOverflow上发布的多个问题中看到的问题,遗憾的是,没有一个可用的解决方案帮助我解决问题,甚至无法配置超时窗口.

我们都改变了客户端的app.config,增加了所有超时(CloseTimeout,OpenTimeout,ReceiveTimeout和SendTimeout)以及服务器上服务的所有web.config值(closeTimeout,openTimeout和SendTimeout).

这些变化都没有任何影响,我仍然收到分钟超时.知道为什么改变这些值会产生影响吗?

在下面的示例中,我们缩短了时间,使我们不必在测试期间等待整整一分钟.

Web.config文件:

<configuration>
  <system.web>
    <compilation targetFramework="4.0" />
  </system.web>
  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.Net">
        <listeners>
          <add name="TraceFile" />
        </listeners>
      </source>
      <source name="System.Net.Sockets">
        <listeners>
          <add name="TraceFile" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener"
           initializeData="trace.log" />
    </sharedListeners>
    <switches>
      <add name="System.Net" value="Verbose" />
      <add name="System.Net.Sockets" value="Verbose" />
    </switches>
  </system.diagnostics>
  <system.serviceModel>
    <diagnostics>
      <messageLogging logMalformedMessages="false" logMessagesAtServiceLevel="false"
                      logMessagesAtTransportLevel="false" />
    </diagnostics>
    <services>
      <service behaviorConfiguration="SearchIndexServiceBehavior" name="SearchIndex.Service">
        <endpoint address="" binding="basicHttpBinding" contract="ISearchIndexServices" />
        <host>
          <timeouts closeTimeout="00:00:10" />
        </host>
      </service>
    </services>
    <bindings>
      <basicHttpBinding> …
Run Code Online (Sandbox Code Playgroud)

c# wcf

11
推荐指数
4
解决办法
3万
查看次数

标签 统计

c# ×1

wcf ×1