2

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

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

4

1 回答 1

1

并不 容易,如果不是不可能的话(所以这几乎是一个重复的问题)。

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

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

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

于 2012-01-20T13:43:50.553 回答