我已经发送了许多http请求与周期
WebRequest request = (WebRequest)WebRequest.Create(str);
在我的计算机上,这条线大约需要500ms
WebResponse response = request.GetResponse();
在网络上的其他计算机上:10至20毫秒
如何修复这个bug?网络上的其他计算机更快地完成请求可能有什么原因?
未安装代理,请求发送到127.0.0.1:port
。
日志代码
String IdHTTPUt_Get(string str)
{
string res="";
DateTime dt = DateTime.Now;
WriteLog("begin");
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
WebRequest request = (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;
using (WebResponse response = request.GetResponse())
{
WriteLog((DateTime.Now - dt).ToString()); dt = DateTime.Now;
Stream receiveStream = 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;
return res;
}
1条答案
按热度按时间goqiplq21#
哪条线路占用了时间-
WebRequest.Create
还是request.GetResponse()
?你在结尾处理响应吗?它应该在using语句中:
连接池限制了你可以连接到任何特定主机的数量--在这种情况下,你最终会等待垃圾收集器释放一个更早的响应。这 * 可能 * 不是问题所在,但我不会惊讶地发现它是问题所在。
编辑:当然,另一种可能性是在你的机器上处理请求需要很长时间。请求在做什么?如果你从其他机器上发出同样的请求(但仍然是对你的机器)需要多长时间?