程序在第三次迭代(HTTPWebRequest)C#挂起

时间:2011-08-09 15:26:53

标签: c# .net windows

我目前面临一个奇怪的问题。我正在测试网站响应时间,但是当第三次(连接计时)方法循环时,它会挂起:

internal class Program
{

        Console.ReadLine();

        loop();
    }
}

它挂起之前的输出是:“HTTP Response Timer”,所以我认为它与正在运行的实例有关。

2 个答案:

答案 0 :(得分:5)

您必须关闭回复。否则,您将达到最大打开连接数。

使用using语句,这是关闭和处理响应的最简单方法:

using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()){

   // .. here some action if any
}

答案 1 :(得分:2)

您没有处理响应,这意味着它会挂在先前请求的连接上。然后新请求等待从池中获取该连接,并阻止因为旧响应仍然“拥有”连接只需将代码更改为:

// You weren't really using the HttpWebResponse class anyway, so why cast?
using (var response = request.GetResponse())
{
}

真的是不是想要递言?你为什么不循环使用:

while(true)
{
    GetResponse();
}

或类似的东西?