设置异步web服务调用超时时间

本文关键字:超时 时间 调用 服务 异步 web 设置 | 更新日期: 2023-09-27 18:04:40

我的Webservice从System.Web.Services.Protocols.SoapHttpClientProtocol继承

我试图设置超时时间:

service.Timeout = 5000; // 5 secs

但是什么都没有发生——既没有TimeoutException也没有其他任何东西。有一次我尝试没有任何声明,它花了190秒的"Connection Timed Out"。190是奇怪的,因为我认为,默认是100秒。

无论如何,超时属性似乎只对同步调用起作用,所以在我的情况下,我不知道为什么它不工作。

我像这样异步调用方法:

service.GetInfoCompleted += service_GetInfoCompleted;
service.GetInfoAsync();

我该如何解决我的问题?

感谢任何帮助!

设置异步web服务调用超时时间

由于没有"本地"的方法这样做-我不得不实现自己的计时器。

在经过的时间b.e 10秒之后,我可以调用异步方法调用的Abort()

你的service.GetInfoAsync()应该返回IAsyncResult。您可以等待5秒操作完成,如果没有完成,则处理超时:

var result = service.GetInfoAsync();
if(!result.AsyncWaitHandle.WaitOne(5000)){
     // handle timeout
}