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