我的问题可能很愚蠢,但需要一个答案。据我所知,每当“操作超时”HttpWebRequest.GetResponse()
方法发生异常比连接关闭和释放。如果它不是真的,它的工作原理是什么?我试图谷歌这一点,但无法得到答案。在httpWebRequest.GetResponse()方法中,操作超时异常关闭连接
编辑:在这种情况下,它是一个POST请求,已建立连接并称为URL被处理在服务器端的请求,但HttpWebRequest对象在等待响应和一段时间后发生的异常。
我的问题可能很愚蠢,但需要一个答案。据我所知,每当“操作超时”HttpWebRequest.GetResponse()
方法发生异常比连接关闭和释放。如果它不是真的,它的工作原理是什么?我试图谷歌这一点,但无法得到答案。在httpWebRequest.GetResponse()方法中,操作超时异常关闭连接
编辑:在这种情况下,它是一个POST请求,已建立连接并称为URL被处理在服务器端的请求,但HttpWebRequest对象在等待响应和一段时间后发生的异常。
我的理解是,您必须调用Close方法来关闭流并释放连接。否则可能会导致应用程序无法连接。如果您不确定,可以在Close
方法或HttpWebRequest.GetResponse()
附近放置try/catch块。
那么我不完全确定,但它看起来像Operation TimedOut
异常可能会错误的底层连接通道;导致所有请求结束后出现同样的异常。
必须调用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
}
}
我们在这里谈论哪种Close方法? HttpWebRequest没有Close方法,并且HttpWebResponse尚未在此初始化。 – Nps
@NPS,请检查我已链接的文档以及答案。特别是你应该调用'Stream.Close()'或'HttpWebResponse.Close()'。看到这里https://msdn.microsoft.com/en-us/library/system.net.httpwebresponse.close%28v=vs.110%29.aspx。 – Rahul
但在GetResponse()方法中发生异常,该方法返回由于异常而不返回的HttpWebResponse对象。我无法在空对象上调用Close方法。 – Nps
其中Close方法,我们这里所说的? HttpWebRequest没有Close方法,并且HttpWebResponse尚未在此初始化。 – Nps