2010-07-28 33 views
4

有没有什么方法可以检测我的服务中的客户端断开连接?我只有机会知道某个客户端是否在try-catch方法上断开连接,这不是一个很好的方法。我不想为连接到我的服务的每个新客户端创建一个计时器来监视其最后一次事务。WCF全双工手柄客户端断开

回答

2

不,没有简单或优雅的方式来检测客户端断开连接。如果客户端关闭或崩溃,服务会收到“ClientTerminated”事件,这将是一个很好的环境。但是,这种行为不符合基于消息的体系结构。

一个不太好的解决方案是定期用回调方法ping客户端,看看这个调用是否超时。

或者,如果您正在使用PerSession实例化,则可以将inactivityTimeout设置为一个短值(例如,与默认值10相对的一分钟),并在客户端使用计时器定期调用一个空方法服务器。

请参阅this question进行类似的讨论。

+0

谢谢,虽然我可以创建我自己的客户端断开事件,就像tcp服务器如何工作。 – powerbox 2010-07-28 03:51:52