我的 WCF 应用程序有问题。我为我的应用程序使用了 netTcpBinding。在客户端,我使用 ClientBase<> 连接到主机,并使用 ICommunicationObject.State 检查通道是否仍然可用。
问题是在“receiveTimeout”之后,TCP 连接被切断,但是在客户端,当我检查状态时,它仍然是“Opened”。而当我尝试直接使用它时,也有例外。
为了确认 TCP 套接字的断开,我使用 TCPView 对其进行监控。超时后被切断。但是通道的状态没有更新。
实际上,我在服务器的配置中添加了诊断日志。并且在超时后我得到一个异常(同时发生断开连接)。
这是例外(在服务器端):
System.ServiceModel.CommunicationObjectAbortedException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Net.Sockets.SocketException, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 TCP 错误 ( 995:由于线程退出或应用程序请求,I/O 操作已中止)在传输数据时发生。
如果我尝试再次从客户端调用服务,在客户端,我会得到这个异常:
System.ServiceModel.CommunicationException:套接字连接已中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。
我认为客户端的异常是正常的。但我不知道我是否需要处理服务器端的异常。
有人有想法吗?
非常感谢。