为什么我无法在HttpWebRequest上获得超时? (HttpWebRequest Timeout噩梦)

时间:2012-09-11 14:07:45

标签: httpwebrequest timeout

我在Quartz.Net框架中使用它。每个作业(线程)只有一个Web请求

这是检查清单:

  • 所有一次性物品都用于使用块!

    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
                str = reader.ReadToEnd();
    
  • ServicePointManager.Expect100Continue = false;
  • ServicePointManager.DefaultConnectionLimit = 1000;
  • ServicePointManager.MaxServicePoints = 1000;
  • request.KeepAlive =假
  • request.Timeout = 5000;
  • request.ReadWriteTimeout = 5000;
  • request.ServicePoint.ConnectionLeaseTimeout = 5000;
  • request.ServicePoint.MaxIdleTime = 5000;

我正在使用秒表来衡量网络请求时间。这些是日志:

异常Web请求时间:16333 ms

Web请求时间异常:8350 ms

异常Web请求时间:9846 ms

异常Web请求时间:7545毫秒

异常Web请求时间:6662 ms

异常Web请求时间:18332 ms

任何想法?

PS:此问题是Timeout supported Multithreaded Web Request

的摘要版本

1 个答案:

答案 0 :(得分:0)

我从这个问题中吸取了教训:如果你在多个线程中使用HttpWebRequest,请不要同步使用它!