httpWebRequest.GetResponse()方法中的操作超时异常是否关闭连接



我的问题可能很傻,但需要答案。据我所知,每当HttpWebRequest.GetResponse()方法中出现"操作超时"异常时,连接就会关闭并释放。如果它不是真的,那么它是如何工作的?我试着用谷歌搜索这个,但没有得到答案。

EDIT:在这种情况下,它是一个后请求,连接已经建立,调用的URL正在服务器端处理请求,但HttpWebRequest对象正在等待响应,并且在某个时候发生了异常。

我的理解是,必须调用Close方法来关闭流并释放连接。如果不这样做,可能会导致应用程序连接不足。如果您不确定,您可以始终在Close方法或HttpWebRequest.GetResponse()周围放置try/catch块。

我不完全确定,但看起来Operation TimedOut异常可能会使底层连接通道出错;导致之后的所有请求都以相同的异常结束。

根据MSDN文档

您必须调用Close方法来关闭流并释放联系否则可能会导致您的应用程序用完连接。

我试了一下

    private static void MakeRequest()
    {
        WebRequest req = null;
        try
        {
            req = WebRequest.Create("http://www.wg.net.pl");
            req.Timeout = 10;                
            req.GetResponse();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            req.Timeout = 10000;
            req.GetResponse(); // This as well results in TimeOut exception
        }
    }

最新更新