【发布时间】:2012-10-02 09:46:24
【问题描述】:
我正在开发一个客户端/服务器应用程序,其中客户端每隔几秒调用一次 WCF 服务。我没有使用 IIS - 该服务作为控制台应用程序运行(旨在将其作为 Windows 服务安装在生产系统上)。
我开始使用 basicHttpBinding,如果我停止服务(以模拟通信/服务器故障),客户端通过处理抛出的 EndpointNotFoundException 简单地忽略它无法连接到服务的事实。重启服务后,客户端又可以开始调用了,一切正常。
我现在切换到使用 netTcpBinding,这一次当我停止服务时,它的控制台窗口需要一段时间才能关闭(可能是由于 TCP 管理连接的方式,最终超时)。此时客户端收到CommunicationException(“套接字连接已中止”)。当我重新启动服务时,客户端无法像使用 basicHttpBinding 那样“恢复”。每次尝试调用服务时,它都会抛出一个CommunicationObjectFaultedException(“通信对象 System.ServiceModel.Channels.ServiceChannel,不能用于通信,因为它处于故障状态。”) .
我将如何构建某种恢复/恢复行为,类似于我在 basicHttpBinding 中看到的?
【问题讨论】:
标签: wcf nettcpbinding