【WCF】 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:00:56.9810000”。
如果您遇到如题所示异常提示,恭喜您找对地方了!
出现这种问题一般是由WCF的安全机制导致的,这种情况一般只会出现在NetTcpBinding的情况下,你会发现将WCF服务与本机置于同一台机上,无论客户端采用哪种方式(iis,VS自带的WEB服务器、ConsoleApplication、WinForm),都不会有问题,但是当把WCF服务部署在局域网内某台机器上,然后通过客户端去访问就有问题了,而出问题的情况让人很莫明其妙(IIS访问时出现如题的异常,而VS自带的WEB服务器、ConsoleApplication、WinForm都不会出现异常)。
针对这种情况,解决方法如下:
注:以下的解决办法为禁用WCF连接安全限制,当然你可以设置该Mode为其它类型,同时设置安全验证方式等
1. 配置文件实现
<bindings>
<netTcpBinding>
<binding>
<security mode="None">
</security>
</binding>
</netTcpBinding>
</bindings>
<netTcpBinding>
<binding>
<security mode="None">
</security>
</binding>
</netTcpBinding>
</bindings>
2. 编码实现
NetTcpBinding binding = new NetTcpBinding()
{
ReaderQuotas = new XmlDictionaryReaderQuotas()
{
MaxStringContentLength = 2147483647
},
Security = new NetTcpSecurity()
{
Mode = SecurityMode.None
}
};
{
ReaderQuotas = new XmlDictionaryReaderQuotas()
{
MaxStringContentLength = 2147483647
},
Security = new NetTcpSecurity()
{
Mode = SecurityMode.None
}
};