2010-08-15 31 views
1

我發出的HTTP請求與的GetResponse()循環慢只有我的電腦上

WebRequest request = (WebRequest)WebRequest.Create(str); 

此行大約需要500ms的我的電腦

WebResponse response = request.GetResponse(); 

其他計算機上的網絡上:10-20ms

如何解決這個bug? 網絡上的其他計算機可以更快地完成請求的原因是什麼?

沒有安裝代理,請求是127.0.0.1:port

日誌

字符串IdHTTPUt_Get(字符串str) { 串RES = 「」 的代碼;

DateTime dt = DateTime.Now;

WriteLog(「begin」); ((DateTime.Now - dt).ToString()); dt = DateTime.Now;

WebRequest請求=(WebRequest)WebRequest.Create(str); ((DateTime.Now - dt).ToString()); dt = DateTime.Now;

request.Credentials = new NetworkCredential(opt_Utor_User,opt_Utor_Password);

request.Method =「GET」; ((DateTime.Now - dt).ToString()); dt = DateTime.Now;

request.Proxy = null;

使用(WebResponse的響應= request.GetResponse())

{

WRITELOG((DateTime.Now - DT)的ToString()); dt = DateTime.Now;

Stream receiveStream = response.GetResponseStream(); ((DateTime.Now - dt).ToString()); dt = DateTime.Now;

的StreamReader readStream =新

的StreamReader(receiveStream,Encoding.UTF8); ((DateTime.Now - dt).ToString()); dt = DateTime.Now;

res = readStream.ReadToEnd(); ((DateTime.Now - dt).ToString()); dt = DateTime。現在;

receiveStream.Close();

readStream.Close();

}

WRITELOG((DateTime.Now - DT)的ToString()); dt = DateTime.Now;

return res;

}

回答

0

哪條線走的是時間 - WebRequest.Createrequest.GetResponse()

你是否在最後處置了迴應?這應該是一個使用語句中:

using (WebResponse response = request.GetResponse()) 
{ 
    ... 
} 

連接池限制,你可以做任何特定的主機連接的數量 - 在這種情況下,你最終會等待垃圾回收器釋放的早期反應。 可能不是問題,但我不會驚訝地發現它。

編輯:當然,另一種可能性是,它只是需要很長時間來處理您的機器上的請求。請求正在做什麼?如果您從發出相同的請求其他機器(但仍然是您的機器)需要多長時間?

+0

開始 00:00:00.0050003 00:00:00 00:00:00 00:00:00.5270301 00:00:00 00:00:00 00: 00:00 00:00:00 – AlexGu 2010-08-15 16:09:39

+0

(WebResponse response = request.GetResponse()需要527ms – AlexGu 2010-08-15 16:16:07

+0

從其他mashine到本地(utorrent web api)和遠程mashine工作正常 IE中的一些錯誤(請求處理與IE?).. – AlexGu 2010-08-16 01:56:58

相關問題