我的目標是在最短的時間內從多達6000個Url獲得答案。它工作得非常好(5200個LAN地址爲12秒),直到發生一些延遲。我需要幫助設置.NET HttpWebRequest超時
我的代碼使用多達20個同步HttpWebRequest.BeginGetResponse與ThreadPool.RegisterWaitForSingleObject
超時處理。
然而,有些請求(多達4個請求中的4個)從來沒有用第二個參數(timedOut)爲真來觸發TimeoutCallback函數,他們浪費了我寶貴時間的5分鐘,直到它們碰到BeginGetResponseCallback函數,然後引發WebException。例外情況表示「操作達到了時間限制」,但由於例外信息是葡萄牙語(我的母語),我無法Google。
我不知道我是否可以將這個時間限制減少到20秒。任何人都知道?我已經嘗試過:
<system.web>
<httpRuntime executionTimeout="20"/>
</system.web>
但是,當我將它作爲控制檯應用程序運行時,ASP.NET配置不起作用。我也試過:
myHttpWebRequest.Timeout = 20*1000;
和
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), AsyncState, 20*1000, true);
沒有成功。你可以幫我嗎?
更新 什麼,我想說的是有一個異步HTTP請求的4分可能的結果:
- 永遠也達不到的回調函數 - >超時回調函數
- 河段和答案成功
- 到達並引發異常
- 延遲5分鐘直到在回調函數內引發「時間限制」web異常
第四可能性是一個被延遲我的申請,我不知道如何縮短該延遲
更新 有沒有一種可能性,即代替GetResponse
方法GetResponseStream
是誰造成超時?
謝謝,也許這就是解決方案。但因爲我必須等待,直到再次出現問題來測試它。 – 2008-12-24 13:11:07