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

时间:2009-03-20 09:30:00

标签: c# wcf

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

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

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

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

它可以帮到你