HttpResponse是否在“使用”阻止没有明确的response.close()
-
05-07-2019 - |
题
我试图弄清楚这一点:
方法-1:
Dim request = CreateRequest(uri) //some uri
Dim response = DirectCast(request.GetResponse, HttpWebResponse)
response.Close()
方法-2:
Dim request = Createrequest(uri)
Using response = DirectCast(request.GetResponse, HttpWebResponse)
End Using
当我在本地计算机上使用Method-1和Method-2连接并从远程计算机X获得响应时,它们都正常工作。
当我在远程机器Y上使用此代码从X获得响应时,只有Method-1正在工作,而对于Method-2,我正在
System.Net.WebException: The operation has timed out
上述方法与可能出现的问题之间的区别是什么?
解决方案
使用
只需转换为 Try
/ Finally
块,它在 .Dispose()
>最后块。您可以使用 Reflector 查找生成的代码。您还可以使用它来查看方法的作用。在这种情况下, HttpWebResponse
上的 Dispose()
方法不与 Close()
相同,这意味着它实际上存在语义差异。
使用
通常具有在对象超出范围时立即释放对象使用的资源的好处。这对于像GDI +或文件句柄这样的东西很有用,但在 HttpWebResponse
的情况下,它可能有点不同。我不太了解那个特定的对象我的猜测是 Close()
它并没有真正释放任何资源,因此不需要 Dispose()
调用<代码>关闭()。也许这种行为有正当理由。
不隶属于 StackOverflow