2010-01-03 99 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