我正在尝试将此作为为WeblClient调用设置超时的常用解决方案。在我从离线机器请求URL的测试用例中:设置为1秒时,我一直得到20秒的超时。
public class TimeoutWebClient : WebClient
{
public TimeoutWebClient(TimeSpan timeout)
{
_timeout = timeout;
}
private TimeSpan _timeout;
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
request.Timeout = (int)_timeout.TotalMilliseconds;
return request;
}
}
基于服务器的超时在这种情况下无关紧要。我能错过什么?
我找到了一个同时设置HttpWebRequest.ReadWriteTimeout
和HttpWebRequest.ServicePoint.MaxIdleTime
的代码段。但是将这些值设置为超时值仍然没有什么作用,并且仍然会得到~20秒的超时。
有什么可能导致这种行为的其他想法?
答案 0 :(得分:1)
您是否有机会使用异步下载方法?
来自MSDN:
Timeout属性仅影响使用GetResponse方法发出的同步请求。要使异步请求超时,请使用Abort方法。