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