代码之家  ›  专栏  ›  技术社区  ›  Magnus Lindhe

WCF调用失败,因为基础连接已关闭

wcf
  •  1
  • Magnus Lindhe  · 技术社区  · 14 年前

    我正在打电话给WCF服务,但我得到一个 CommunicationException 在客户端上,同时接收来自服务的响应。

    System.ServiceModel.CommunicationException:接收对的HTTP响应时出错 http://localhost:8080/Service .这可能是由于服务端点绑定未使用HTTP协议造成的。这也可能是由于服务器中止了HTTP请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。--->system.net.webexception:基础连接已关闭:接收时发生意外错误。--->system.io.ioexception:无法从传输连接读取数据:远程主机强制关闭了现有连接。--->system.net.sockets.socketException:远程主机强制关闭了现有连接

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

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

    2 回复  |  直到 9 年前
        1
  •  2
  •   TruckerG    14 年前

    尝试设置 receiveTimeout 等于或大于服务方法完成所需的时间。的默认值 接收超时 属性为10分钟。因此,如果服务方法需要更长的时间来完成连接,则将关闭连接(如果在 接收超时 发生)。这个 接收超时 描述了属性 here .

        2
  •  2
  •   Jeremy McGee    14 年前

    这样一个非常长的操作很可能是异步调用的——换句话说,客户机要求服务器准备数据,然后在服务器完成工作的同时处理其他事情。当服务器完成后,它会重新调用客户机。

    讨论了异步WCF操作 here .