我正在使用C#并通过使用VSTS 2008的“添加Web引用...”功能从客户端的ASP.Net asmx Web服务创建代理。
我正在使用异步方法调用模型(即调用AsyncXXX方法,它将立即返回)并处理完整事件(即使从服务器端收到响应,我也会添加事件处理程序来处理完成)。 / p>
我发现服务器很长时间没有响应,整个事件都不会被触发。
我的问题是,
如果在调用AsyncXXX方法后没有来自服务器的响应,是不是预期的功能或我的错误,将不会调用完整的事件处理程序?
有没有办法分配超时值 - 这样我就不会无限期地等待完整的事件处理程序了?
答案 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
属性。它可以回答你的第二个问题。