如何处理WCF客户端断开连接

如何处理WCF客户端断开连接?

我试过CallBacks但它似乎只有在客户端通过使用“断开连接”按钮“清楚地”断开连接时才有效。

我希望在客户端断开连接时通知我的服务器,即使是手动断开连接或客户端进程崩溃。

使用OperationContext.Current.Channel.Faulted和OperationContext.Current.Channel.Closed事件。

当客户端因任何原因断开连接时会触发这些事件。

为什么没有一个循环,客户端每隔一秒钟就会ping一次服务,然后进行回调。 当回调失败时,客户端已断开连接。

轮询的变体是使用消息传递。 客户端可以发布“我在这里”消息,然后在断开连接时删除该消息。 服务器可以监视队列是否断开连接。 另一种选择是使用BOSH ,双向HTTP通信。 这就是网络聊天客户端使用的内容。

我会说,如果客户端以exception方式断开连接,则无法确保服务器会意识到这一点。 它非常像HTTP。 如果我们关闭浏览器,假设强制退出,浏览器不会向服务器发送任何内容。

这是我们有会话超时的众多原因之一。 断开客户端并在服务器端清理客户端执行错误操作时所使用的所有内容(例如,操作时间太长)或在不让服务器知道的情况下断开连接。

if (HttpContext.Current.Response.IsClientConnected == false) { ..} 

它可以帮助你