【发布时间】:2015-06-30 11:38:54
【问题描述】:
我正在尝试将其用作为 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 的sn-p。但是将这些设置为超时值仍然没有任何区别,并且仍然会出现约 20 秒的超时。
关于什么可能导致这种行为的任何其他想法?
【问题讨论】:
-
没人能重现超时不被尊重吗?或者也许它在我的盒子上。
-
我也遇到了同样的问题。让我们知道您是否已解决或解决它。
-
我最终在包装类中使用了一个单独的计时器,它在所需的时间取消请求。留下这个问题以获得真正的答案。