2

我的 Web 服务继承自System.Web.Services.Protocols.SoapHttpClientProtocol.

我试图设置超时:

service.Timeout = 5000; // 5 secs

但什么也没有发生——既不是 TimeoutException 也不是其他任何事情。一旦我在没有任何声明的情况下尝试它,它需要 190 秒才能获得"Connection Timed Out". 我想 190 很奇怪,默认值为 100 秒。

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

我像这样调用异步方法:

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

我该如何解决我的问题?

任何帮助表示赞赏!

4

2 回答 2

1

由于没有“本机”这样做 - 我必须实现自己的Timer

经过时间为 10 秒后,我可以调用异步方法调用的 Abort()

于 2013-03-19T08:07:54.970 回答
0

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

var result = service.GetInfoAsync();

if(!result.AsyncWaitHandle.WaitOne(5000)){
     // handle timeout
}
于 2013-03-18T10:36:48.747 回答