在WCF服务中的异步方法调用期间检测连接失败

时间:2011-04-05 11:26:44

标签: c# .net wcf asynchronous long-polling

我有一个异步WCF服务实现,我想检测客户端在WCF方法调用期间何时中止连接。

基本上,这就是我想要的:

  1. 客户端调用WCF方法
  2. 服务器开始异步处理请求
  3. 客户端中止连接(或连接因任何原因失败)
  4. 应通知服务器客户端中止连接
  5. 这可能吗?

    这适用于长轮询实施。或者,服务器可以确保客户端成功收到响应吗?如果没有,则应该为下一个轮询请求保存响应。

2 个答案:

答案 0 :(得分:2)

我不知道知道客户端是否连接的任何可靠方式。请参阅thisthisthis

建议的一些替代方法是使用双工通道或使用队列。基于队列的解决方案将使服务器发布对队列的响应,并且客户端从队列中挑选这些响应。该队列可以在MSMQ,DB,Azure中实现。

由于

答案 1 :(得分:0)

您可以设置一个轮询解决方案,而不是客户端保持连接以等待答案,它会发出请求并立即断开连接。然后它每隔X秒重新连接一次,以轮询请求是否已完成。

在服务器上,如果您没有看到客户端轮询X * 2秒,那么客户端发生了一些事情,您应该中止该请求。

让这项工作需要服务器上的一些额外基础设施,以便跟踪哪些请求处于活动状态以及上次看到客户端的时间,不幸的是。