CommunicationException was unhandled by user code
The socket connection was aborted. This could be caused by an error processing your message
or a receive timeout being exceeded by the remote host, or an underlying network resource
issue. Local socket timeout was '02:48:04.9840000'.
Run Code Online (Sandbox Code Playgroud)
几个月来我一直在测试这个应用程序,并且在对其中一个服务进行了一些小改动之后才看到这个错误.它只有几秒钟,所以我不认为这是一个超时问题.
InnerException:System.IO.IOException:读取操作失败,请参阅内部异常
(Inner)InnerException:System.Net.Sockets.SocketException - 远程主机强制关闭现有连接.
任何建议都非常感谢!
提前致谢
通常,当对方没有干净地关闭连接时,我已经看到了这个错误.如果在客户端你有一个继承自ClientBase<T>那时的类,你应该Close在完成服务时调用(实际ClientBase<T>实现,IDisposable所以你可以使用一个using语句).
如果您使用a ChannelFactory<T>来创建与服务的连接,则结果是实现合同但也实现的代理ICommunicationObject; 你完成后应该打电话给Close你.
在服务方面,事情并不相同,会话(以及底层套接字)由客户端管理.如果服务正在丢失套接字,那很可能是错误的结果,在这种情况下,Music Magi的建议很好.微软在这里讨论如何解决这个问题.
请注意,要清楚了解正在发生的情况,您可能需要为客户端和服务设置跟踪.要查看您将使用的跟踪SvcTraceViewer应该在Program Files\Microsoft SDKs\Windows\v6.0A\bin或Program Files\Microsoft SDKs\Windows\v7.0A\bin文件夹中.如果必须跟踪客户端和服务,则可以SvcTraceViewer使用File / Add菜单一起打开这两个文件.
| 归档时间: |
|
| 查看次数: |
16456 次 |
| 最近记录: |