WCF连接未正确中止/远程主机强制关闭现有连接

时间:2012-05-03 17:18:17

标签: .net wcf timeout connection

我有一个使用WCF服务的Windows应用程序。它有一些WCF服务调用,之后总是调用ClientBase.Close()方法。当我关闭应用程序时,我在VS2010中没有出现任何错误。我已经在调试器中打开了所有异常,并将我的编译器附加到我可以做的一切。我正在关闭所有连接,并且在关闭应用程序时没有异步运行WCF服务调用。

但我确实在WCF服务上得到了一个例外!

  

套接字连接已中止。这可能是由于处理消息的错误或远程主机超出接收超时或基础网络资源问题引起的。本地套接字超时(这里有一些大数字)。

错误代码为10054

内在的例外是:

  

远程主机强行关闭现有连接。

但是我的代码怎么会发生这种情况呢?

我该怎么做才能找到这种错误行为的原因?

2 个答案:

答案 0 :(得分:1)

增加ChannelInitializationTimeout

  

在此期间等待连接发送前导码的最长时间   初读。在验证发生之前收到此数据。

默认值为5秒。这是因为“现有连接被远程主机强行关闭”。异常。

答案 1 :(得分:1)

在服务器上启用WCF跟踪,使用WCF跟踪查看器查看结果,确保应用程序池对服务目录具有权限...

<system.diagnostics>
<sources>
  <source name="System.ServiceModel" 
          switchValue="Verbose" 
          propagateActivity="true">
    <listeners>
      <add name="traceListener" 
           type="System.Diagnostics.XmlWriterTraceListener" 
           initializeData="Events.evt"  />
    </listeners>
  </source>
</sources>
<trace autoflush="true"/>