2013-03-19 35 views
3

當我發送短信到多個客戶端它提供了一個錯誤的操作超時,錯誤是超時HttpWebResponseSystem.Net.WebException:操作已在HttpWebResponse

我曾嘗試 myReq.Timeout = 50000; myReq.ReadWriteTimeout = 50000;

但行給予同樣的錯誤錯誤150
Line 148: myReq.Timeout = 50000;
Line 149: myReq.ReadWriteTimeout = 50000;
Line 150: HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
Line 151: System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
Line 152: string responseString = respStreamReader.ReadToEnd();

回答

14

這很可能是這個問題:

HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse(); 

WebResponse實現IDisposable,所以你應該使用using聲明它(併爲您從流創建的StreamReader)。如果您打開WebResponse,它將佔用連接池到該主機的連接,並且可以通過這種方式結束超時。固定的代碼應該是這樣的:

string responseString; 
using (var response = myReq.GetResponse()) 
{ 
    using (var reader = new StreamReader(response.GetResponseStream()) 
    { 
     responseString = reader.ReadToEnd(); 
    } 
} 

這將關閉流和響應即使拋出一個異常,所以你會經常清理資源(在這種情況下釋放連接返回到池中)及時。

+0

感謝謝謝謝謝你的工作 – user2181428 2013-03-19 07:29:29

相關問題