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

本文关键字:HTTPWebRequest 迭代 挂起 第三次 程序 | 更新日期: 2023-09-27 18:05:14

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

internal class Program
{
        Console.ReadLine();
        loop();
    }
}

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

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

必须关闭响应。否则,您将达到打开连接的最大值。

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

using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()){
   // .. here some action if any
}

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

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

真的是想递归吗?为什么不使用:

进行循环呢?
while(true)
{
    GetResponse();
}

之类的?