首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以重用HttpWebRequest吗?

我可以重用HttpWebRequest吗?
EN

Stack Overflow用户
提问于 2010-02-02 03:57:04
回答 2查看 16.6K关注 0票数 22

我可以重用HttpWebRequest吗?

似乎对站点的第三次请求会导致操作超时。似乎每个请求都会创建一个新的连接,所以我想知道是否可以通过更改url并再次获取请求来重用HttpWebRequest。有问题的代码如下。这段代码检查urls的范围是否存在。

代码语言:javascript
复制
    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();
    }
EN

回答 2

Stack Overflow用户

发布于 2010-02-05 01:54:36

将响应调用封装在using语句中,以确保连接始终关闭:

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url)
// ...
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
  // ...
}

还要将任何GetResponseStream()包装在using语句中。

票数 3
EN

Stack Overflow用户

发布于 2010-02-02 04:09:47

只需创建一个新的。我不担心在这种情况下的效率,因为我相信.NET环境+ HTTP keepalives应该可以为您处理这些事情。

您可能会遇到以下两种情况之一: 1)打开连接的数量问题;终止连接,错误就会消失;或者2)服务器上每秒请求的数量限制(反DoS)。我会首先尝试#1,因为它更简单,然后如果您仍然看到问题,请检查服务器是否收到请求但拒绝它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2179626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档