没有跟踪的WCF超时

时间:2016-05-25 17:31:30

标签: c# .net wcf

我有一个使用ipc绑定的wcf windows服务,客户端是一个IIS web服务。在调试过程中,我不断收到以下错误:

  

发生了System.TimeoutException   消息:抛出异常:' System.TimeoutException'在System.ServiceModel.dll中   附加信息:管道连接已中止,因为管道的异步读取未在分配的超时00:02:00内完成。分配给此操作的时间可能是较长超时的一部分。

奇怪的是它不会在客户端上造成任何错误。并且在通话中放置断点并没有帮助或被触发。

我尝试编辑Visual Studio 2015的异常设置以打破此异常。确实如此,但是没有源代码可用"显示。

最后奇怪的是,我已将服务器和客户端的所有超时编辑为30秒,并且在2分钟时仍然失败。

服务器配置:

 <netNamedPipeBinding>
    <binding name="ipcBinding" closeTimeout="00:00:30" openTimeout="00:00:30"
      receiveTimeout="00:00:30" sendTimeout="00:00:30" maxConnections="10000"
      maxReceivedMessageSize="1073741824">
      <readerQuotas maxDepth="0" maxStringContentLength="0" maxArrayLength="52428800"
        maxBytesPerRead="0" maxNameTableCharCount="0" />
    </binding>
  </netNamedPipeBinding>

...

 <serviceBehaviors>
    <behavior name="MyService">
      <serviceDebug includeExceptionDetailInFaults="true" />
      <dataContractSerializer maxItemsInObjectGraph="5242880" />
      <serviceThrottling maxConcurrentCalls="10000" maxConcurrentSessions="5000"
        maxConcurrentInstances="5000" />
      <serviceTimeouts transactionTimeout="00:00:30" />
    </behavior>
  </serviceBehaviors>

客户端配置:

  <netNamedPipeBinding>
    <binding name="ipcBinding" closeTimeout="00:00:30" openTimeout="00:00:30"
      receiveTimeout="00:00:30" sendTimeout="00:00:30" maxConnections="5000"
      maxReceivedMessageSize="1073741824">
      <readerQuotas maxArrayLength="52428800" />
    </binding>
  </netNamedPipeBinding>

编辑:我使用.NET 4.6(控制台应用)创建了一个全新的客户端,它工作正常,错误永远不会出现。但是我已经将其缩小到仅在我的WinForms客户端进行远程调用时才发生。两者都使用完全相同的ClientBase实现,并包含在using语句中。

0 个答案:

没有答案