Timeout异常上的WCF服务行为

时间:2011-05-17 06:20:16

标签: wcf timeoutexception

我们有一个WCF服务方法(同步),它调用另一个进程(通过COM)来做一些事情。现在这个COM过程大约需要10-15秒才能完成,然后将调用返回给我的服务,而该服务又应该返回给客户端。

在WCF客户端,我们将sendtimeout设置为5秒,因此在5秒后我们会在客户端收到超时异常。

现在我的问题是客户端收到超时异常后服务端会发生什么。因为调用COM进程仍在进行中,并且可能在5-10秒之后返回服务,所以服务如何处理这种情况。

如果需要进一步输入,请告诉我。

此致

1 个答案:

答案 0 :(得分:0)

Afaik,客户端抛出异常,但服务继续运行。如果您有长时间运行的操作,可以查看asynchronous calls

<强>更新 如果这是不可能的,并且由于同样的原因增加超时不是一个选项,我看不出如何避免超时异常。一些恢复方法:

  • 如果您想在客户端超时时中止服务器操作,可以添加CancelCOMCall之类的服务操作,并在捕获TimeoutException时从客户端调用杀死COM进程。

  • 如果要让操作完成但阻止来自客户端的重复调用(由超时异常后的重试引起),您可以保存每个客户端正在运行的COM操作,并放弃对已经运行的进程的调用。

我同意这两种方法都不是很整洁,但没有异步调用对我来说看起来有点困难。我不是WCF专家。