C#的HttpWebRequest第一次請求很慢逾時的原因及解決方案

來源:互聯網
上載者:User

在使用HttpWebRequest建立http請求時,第一次串連的響應速度會很慢,而且還會出現請求逾時的錯誤,這裡大概有十幾秒鐘的等待時間,但是一旦第一次運行成功後,下面的請求頁面速度就會很快了。

網上尋找了下,發現和我遇到同樣問題的網友也有很多。

網友小A說:

“第一次用HttpWebRequest請求串連非常慢,但是只要第一次串連getresponse或者getrequeststream()成功了,後面就很快。不過只要一重新撥號,就又要很長時間才能擷取getresponse()或者是getrequeststream()。
求怎麼樣才能解決這個問題,即使第一次慢點,但是等後面網路重撥後,可以快速的連結上,擷取響應。
用迴圈套用他 第一次的時候超級慢,然後後面跟著很快,但是只要斷開網路連接後重新串連後第一次就又很慢了。求解~~~”

網友小B說:

“今天把我以前做的一個程式升級到了.NET 4.0的版本,裡面有一段通過HttpWebRequest擷取html的代碼,第一次運行特別慢,後續運行就快了。在網上搜了一下,找到了原因:.NET4.0中的預設代理是開啟的,使用預設代理時,只有等待逾時後才會繞過代理,從而導致第一次串連特別慢。(不知道微軟為什麼要把這個開啟)”

【問題所在】

.NET4.0或3.5中的預設代理是開啟的,而我並沒有設定!故只有等待逾時後才會繞過代理,這就阻塞了.

【參考資料】

"It's not set at all in app.cong or machine.config. Hmm. If I'm reading the
MSDN docs right, the default for defaultProxy.enabled is TRUE if the element
isn't specified at all. That would be consistent with my observations.
"
http://msdn2.microsoft.com/en-us/library/kd3cf2ex(VS.80).aspx
 
【問題引申】(參考)

如果在其它版本的.NET環境中遇到類似問題,不妨嘗試

WebClient.Proxy = null; 



HttpWebRequest.Proxy = null;

加了上面這一句 HttpWebRequest.Proxy = null;  將其預設代理設定為空白時,果然 HttpWebRequest在第一次運行時不慢了,響應速度恢複了正常。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.