WCF调用失败,因为底层连接已关闭

时间:2009-11-27 08:45:24

标签: wcf

我正在调用WCF服务,但是在从服务接收响应时我在客户端上获得CommunicationException

  

System.ServiceModel.CommunicationException:接收到http://localhost:8080/Service的HTTP响应时发生错误。这可能是由于服务端点绑定不使用HTTP协议。这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。请参阅服务器日志以获取更多详---> System.Net.WebException:基础连接已关闭:接收时发生意外错误。 ---> System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接。 ---> System.Net.Sockets.SocketException:远程主机强制关闭现有连接

  • 进行调用的客户端是WCF代理客户端。
  • 服务方法不执行 任何例外。
  • 在那些没有的情况下,WCF调用可以正常工作 需要很长时间才能完成服务 方法完成。
  • 当服务方法需要很长时间才能完成时,WCF调用失败并显示上述异常消息。

客户端绑定的sendTimeout属性已增加到30分钟,以适应服务方法完成所需的时间。

2 个答案:

答案 0 :(得分:2)

尝试将receiveTimeout设置为等于或大于服务方法完成所需的时间。 receiveTimeout属性的默认值为10分钟。因此,如果服务方法需要更长的时间来完成连接将被关闭(如果在receiveTimeout发生之前没有发生其他活动)。 receiveTimeout属性描述为here

答案 1 :(得分:2)

像这样的非常长的操作很可能是异步调用的 - 换句话说,客户端要求服务器准备数据,然后在服务器完成工作时继续使用其他东西。服务器完成后,它会回调客户端。

讨论了异步WCF操作here