【问题标题】:Abort WCF server task if client is disconnected如果客户端断开连接,则中止 WCF 服务器任务
【发布时间】:2012-01-20 13:34:21
【问题描述】:

我们在 Windows 服务下托管了 WCF 服务。该服务的客户端设置了closeTimeout、receiveTimeout、openTimeout、sentTimeout设置为5分钟。服务也一样。在某些情况下,WCF 服务可能需要 5 分钟以上的时间来处理一个任务。在这种情况下,客户端会中止调用,但服务进程会继续运行,直到完成其工作。

现在,问题是...是否有任何可用的配置/技术可以检测到客户端已断开连接或超时(或其他原因?),以便 WCF 服务可以中止其任务?

【问题讨论】:

    标签: .net wcf windows-services wcf-client thread-abort


    【解决方案1】:

    It'snoteasy,如果不是impossible(所以这几乎是一个重复的问题)。

    您真的希望在客户端断开连接时取消操作吗?否则,您可以使用某种工作队列来实现某种类似状态的机制。

    然后,客户端调用QueueQuery(query),它仅执行此操作并将标识符返回给刚刚排队的查询。之后,客户端可以继续轮询QueryStatus(id)以获取状态(例如“Queued”、“Running”、“Finished”),当查询完成时,它可以调用QueryResults(id)

    与此同时,另一个服务(即 Windows 服务,而不是 WCF 服务)继续执行所有排队的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多