2010-01-03 126 views
11

我正在向一个可以访问的可用站点发出Http Webrequest,但HTTP Web请求保持超时。有没有什么理由说明为什么这段代码可能会让它超时?C#HTTP Web请求保持超时

我已经尝试了超时设置,但它仍然继续超时。

Uri CameraUrl = new Uri("http://" + cfg_cameraIps[i]); 
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(CameraUrl); 
    myRequest.Timeout = 5000; 

    myRequest.Method = "HEAD"; 

    try 
    { 
     HttpWebResponse webresponse; 
     webresponse = (HttpWebResponse)myRequest.GetResponse(); 

     if (webresponse.StatusCode.ToString() == "OK") 
     { 
      continue; 
     } 

回答

30

你不关闭Web响应 - 如果你发现了第一对夫妇的请求的工作,但那些不经过,那么这就是问题所在。它试图重新使用现有的连接到服务器,但它不能,因为你没有关闭响应。

你的代码更改为:

​​

,看看有没有什么帮助。

如果它在上的第一个请求失败,那么这是不同的。在这种情况下,请使用Wireshark来查看网络级别发生了什么。

请注意,在上面的代码中,我也删除了字符串转换,以便直接比较状态代码。

+1

一个非常清晰,简洁的答案;但那里并不奇怪! +1 – 2010-01-03 09:29:15

+0

你是对的!非常感谢你! – Ben 2010-01-03 09:33:29

+0

有没有办法分析未完成的未完成回复的数量? – 2014-04-10 19:59:16