GetResponse() 仅在我的计算机上慢
Posted
技术标签:
【中文标题】GetResponse() 仅在我的计算机上慢【英文标题】:GetResponse() slow only on my computer 【发布时间】:2011-03-30 00:05:38 【问题描述】:我已经循环发送了很多http请求
WebRequest request = (WebRequest)WebRequest.Create(str);
这条线在我的电脑上大约需要 500ms
WebResponse response = request.GetResponse();
在网络上的其他计算机上:10-20ms
如何修复这个错误? 网络上的其他计算机可以更快地完成请求的原因是什么?
没有安装代理,请求到127.0.0.1:port
。
日志代码
字符串 IdHTTPUt_Get(字符串 str) 字符串 res="";
DateTime dt = DateTime.Now;
WriteLog("开始");
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
WebRequest 请求 = (WebRequest)WebRequest.Create(str);
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
request.Credentials = new NetworkCredential(opt_Utor_User,opt_Utor_Password);
request.Method = "GET";
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
request.Proxy = null;
使用 (WebResponse response = request.GetResponse())
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
流接收流 = response.GetResponseStream();
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
StreamReader readStream = new
StreamReader(receiveStream,Encoding.UTF8);
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
res = readStream.ReadToEnd();
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
receiveStream.Close();
readStream.Close();
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
返回资源;
【问题讨论】:
【参考方案1】:哪条线路占用时间 - WebRequest.Create
或 request.GetResponse()
?
您是否在最后处理响应?它应该在 using 语句中:
using (WebResponse response = request.GetResponse())
...
连接池限制了您可以与任何特定主机建立的连接数 - 在这种情况下,您最终将等待垃圾收集器释放较早的响应。这可能不是问题,但我不会感到惊讶。
编辑:当然,另一种可能性是在您的机器上处理请求需要很长时间。请求在做什么?如果您从其他机器(但仍然向您的机器)发出相同的请求,需要多长时间?
【讨论】:
开始 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 (WebResponse response = request.GetResponse() 耗时 527ms 从其他 mashine 到本地(utorrent web api)和远程 mashine 工作正常。 IE 中的一些错误(请求是用 IE 处理的吗?)..以上是关于GetResponse() 仅在我的计算机上慢的主要内容,如果未能解决你的问题,请参考以下文章
Hbase-client kerberos 身份验证仅在本地计算机上工作
GetExpressCheckoutDetails 在 asp.net 中返回会话过期(10411 错误)(仅在某些计算机上)