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

时间:2015-06-27 22:21:11

标签: c# httpwebrequest httpwebresponse system.net

我的问题可能很愚蠢,但需要回答。据我所知,只要" The Operation已经超时"在HttpWebRequest.GetResponse()方法中发生异常,而不是关闭和释放连接。如果它不是真的比它是如何工作的?我试图谷歌这个,但无法得到答案。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

MSDN Documentation

  

您必须调用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
        }
    }