我有一个使用WCF服务的Windows应用程序。它有一些 WCF 服务调用,并且之后始终调用ClientBase.Close()
方法。当我关闭应用程序时,我在VS2010中没有任何错误。我已经在调试器中打开了所有异常,并将我的编译器附加到我能做的所有事情上。我正在关闭所有连接,并且在关闭应用时没有 WCF 服务调用异步运行。
但我确实在 WCF 服务上得到了一个例外!
套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时,或基础网络资源问题引起的。本地套接字超时是(这里有一些大数字(。
错误代码为10054
而内心的例外是:
远程主机强行关闭了现有连接。
但是我的代码怎么会发生这种情况呢?
我该怎么做才能找到这种错误行为的原因?
增加ChannelInitializationTimeout
在 初始读取。此数据在进行身份验证之前收到。
默认值为 5 秒。这是导致"远程主机强行关闭现有连接"异常的原因。
在服务器上打开 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"/>