【问题标题】:WCF connections are aborted incorrectly / existing connection was forcibly closed by the remote hostWCF 连接被错误中止/现有连接被远程主机强行关闭
【发布时间】:2012-05-13 06:12:03
【问题描述】:
我有一个使用 WCF 服务的 Windows 应用程序。它有一些 WCF 服务调用,之后总是调用 ClientBase.Close() 方法。当我关闭应用程序时,我在 VS2010 中没有收到任何错误。我已经打开了调试器中的所有异常,并将我的编译器附加到我能做的所有事情上。我正在关闭所有连接,并且在我关闭我的应用程序时没有异步运行 WCF 服务调用。
但我确实在 WCF 服务上遇到了异常!
套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题引起的。本地套接字超时是(这里有一些大数字)。
错误码是10054
内部异常是:
一个现有的连接被远程主机强行关闭。
但是这怎么会发生在我的代码上呢?
我该怎么做才能找到这种错误行为的原因?
【问题讨论】:
标签:
.net
wcf
timeout
connection
【解决方案1】:
增加ChannelInitializationTimeout
在连接期间等待连接发送前导的最长时间
初读。此数据是在身份验证发生之前收到的。
默认值为 5 秒。这是“远程主机强制关闭现有连接”的原因。例外。
【解决方案2】:
在服务器上打开 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"/>