我正在尝试将此用作设置WeblClient调用超时的普遍接受的解决方案。在我从一台离线机器请求URL的测试案例中:当设置为1秒时,我总是获得20秒的超时时间。WebClient超时解决方案无法正常工作(子类设置超时)
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秒的超时时间。
任何其他的想法可能会导致此行为?
没有人能够重现没有被尊重的超时吗?或者,也许它是我盒子上的东西。 – aitee
我有同样的麻烦。让我们知道你是否已经解决它或解决它。 –
我最终在包装类中使用了一个单独的计时器,该类在所需的时间取消请求。 离开这个问题打开一个真正的答案。 – aitee