我有几台计算机作为WCF客户端工作,它们连接到作为WCF服务的计算机。 现在假设一个客户端连接丢失(即电缆断开连接),我怎么知道在服务端发生了什么? 我试图使用wcf回调事件Closing / Closed但我没有接到电话。 我是用C#写的。
最诚挚的问候。 阿迪。
答案 0 :(得分:0)
回调不起作用,因为你的客户无法告诉我“我与你有密切关系”的服务。
您需要的是心跳 - 客户端生成的周期性信号,表示正常运行。如果服务没有及时从客户端收到此信号,则可以猜测该客户端丢失了连接。
此外,您需要一种方法来区分服务端的一个客户端和另一个客户端。例如,每个客户端都可以在心跳信号中传递唯一ID。
答案 1 :(得分:0)
您的服务不应该关心网络电缆是否断开连接。 TCP的一个特点是,除非有人主动发送数据,否则它可以容忍网络连接中的瞬间中断。
在WCF中更是如此,其中有一些额外的框架可以帮助保护您免受网络不可靠的影响。
通过尝试检测客户端断开连接可以实现的主要目的是降低可靠性和可用性。