目前在我們的應用程序中,當執行第一個HTTP Webrequest時,我看到很大滯後。根據我們的日誌,有30-60秒的滯後。它會阻止在HttpWebRequest.BeginGetResponseHttpWebRequest.BeginGetResponse塊30-60秒
下面是從MSDN報價:
的BeginGetRequestStream方法需要一些同步設置任務 完成(DNS解析,代理檢測和TCP套接字 連接,例如)在這個方法變得異步之前。作爲 結果,不應在用戶界面(UI) 線程上調用此方法,因爲它可能需要一些時間(通常爲幾秒)。在 某些環境中,webproxy腳本未正確配置 ,這可能需要60秒或更長時間。配置文件元素上的 downloadTime屬性的默認值爲 一分鐘,這佔據了大部分潛在時間延遲。
我知道有DNS解析,代理檢測和其他所需的東西。但30-60秒太長了。當我在任何瀏覽器中輸入相同的URL時,我立即得到該頁面。當我解決DNS手冊時,也沒有任何延遲。 對同一個URI的所有併發請求都不會被阻塞。當我重新啓動應用程序時,第一個請求再次阻止最小值。 30秒。
這是一個已知的問題?有錯誤嗎?我們在不同的機器上看到這一點,所以我認爲我的開發人員機器不是問題。
下面是一些示例代碼:
private void TestWebRequest()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://matrix.ag-software.de/http-bind");
request.ContentType = "text/xml; charset=utf-8";
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
private void GetRequestStreamCallback(IAsyncResult result)
{
//
}
更新:這必須是我的Windows 7安裝的一個問題。我測試了2臺其他機器,並且不會在那裏導致相同的問題。我看到客戶的日誌文件具有完全相同的問題。這似乎發生在某些機器的某些條件下。
這是針對內部網或互聯網網址嗎? – Justin 2013-03-26 14:26:20
我添加了一些示例代碼。我有內部和外部的問題。也許它只是一個針對這個特定服務器實現的問題,可以通過一些特殊的設置來解決。 關於MONO我們沒有這個問題。目前我正在調試完整的.NET框架3.5。所有框架版本上都不存在該問題。例如Silverlight似乎工作正常,但它使用瀏覽器堆棧。 – Alex 2013-03-26 14:34:09
你有沒有嘗試過,如果對任何其他網站,如谷歌或stackoverflow?它存在嗎? – Justin 2013-03-26 14:38:45