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.Createrequest.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 身份验证仅在本地计算机上工作

尝试保存时 VBA 宏抛出错误(但仅在一台计算机上)

超出速率限制 - 仅在一台计算机上使用

GetExpressCheckoutDetails 在 asp.net 中返回会话过期(10411 错误)(仅在某些计算机上)

FTP NLST 仅在某些客户端计算机上导致“425:无法打开数据连接进行传输”

localhost 仅在我的计算机中有效,在我的本地网络中无效