我可以重用HttpWebRequest吗?
似乎对站点的第三次请求会导致操作超时。似乎每个请求都会创建一个新的连接,所以我想知道是否可以通过更改url并再次获取请求来重用HttpWebRequest。有问题的代码如下。这段代码检查urls的范围是否存在。
static void storeList(TextWriter sw, string urlTemplate, int start, int end)
{
for (int i = start; i < end; i++)
{
var url = string.Format(urlTemplate, i);
var req = (HttpWebRequest)HttpWebRequest.Create(url);
{
req.Method = "HEAD";
tryHttpWebRequest
{
var resp = req.GetResponse();
sw.WriteLine(i);
}
catch (Exception e)
{
}
}
}
sw.Flush();
}
发布于 2010-02-05 01:54:36
将响应调用封装在using语句中,以确保连接始终关闭:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url)
// ...
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
// ...
}
还要将任何GetResponseStream()包装在using语句中。
发布于 2010-02-02 04:09:47
只需创建一个新的。我不担心在这种情况下的效率,因为我相信.NET环境+ HTTP keepalives应该可以为您处理这些事情。
您可能会遇到以下两种情况之一: 1)打开连接的数量问题;终止连接,错误就会消失;或者2)服务器上每秒请求的数量限制(反DoS)。我会首先尝试#1,因为它更简单,然后如果您仍然看到问题,请检查服务器是否收到请求但拒绝它。
https://stackoverflow.com/questions/2179626
复制相似问题