C#中异步Web服务调用的超时

时间:2009-02-11 12:48:35

标签: c# web-services service

我正在使用C#并通过使用VSTS 2008的“添加Web引用...”功能从客户端的ASP.Net asmx Web服务创建代理。

我正在使用异步方法调用模型(即调用AsyncXXX方法,它将立即返回)并处理完整事件(即使从服务器端收到响应,我也会添加事件处理程序来处理完成)。 / p>

我发现服务器很长时间没有响应,整个事件都不会被触发。

我的问题是,

  1. 如果在调用AsyncXXX方法后没有来自服务器的响应,是不是预期的功能或我的错误,将不会调用完整的事件处理程序?

  2. 有没有办法分配超时值 - 这样我就不会无限期地等待完整的事件处理程序了?

  3. 提前谢谢, 乔治

3 个答案:

答案 0 :(得分:3)

在webservice的web.config中,您可以设置超时(如果是,您还需要更改为不处于调试模式)。这应该会导致它抛出异常,从而引发已完成的事件。然后,您需要检查异常,看它是否通过。

<system.web>
    <httpRuntime executionTimeout="120" />
</system.web>

答案 1 :(得分:0)

如果您希望Web服务永不超时,可以将此行放在Web服务类中:

this.Timeout = System.Threading.Timeout.Infinite;

答案 2 :(得分:-1)

您的代理应继承的

SoapHttpClientProtocol具有从其祖先Timeout继承的WebClientProtocol属性。它可以回答你的第二个问题。