httpresponse가 명시 적 응답을 가진 "사용"블록에서 작동합니까? Close ()
-
05-07-2019 - |
문제
나는 이것에 대한 설명을 얻으려고 노력했다.
Method-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로부터 응답을 얻었을 때 메소드 -1 만 작동하고 방법 -2의 경우
System.Net.WebException: The operation has timed out
위에서 언급 한 방법의 차이점과 가능한 문제는 무엇입니까?
해결책
Using
단순히 a로 번역됩니다 Try
/Finally
어떤 전화를 차단하십시오 .Dispose()
에서 Finally
차단하다. 당신이 사용할 수있는 반사기 생성 된 코드를 찾으려면 방법을 사용하여 방법이 무엇을하는지 살펴볼 수 있습니다. 이 경우 Dispose()
메소드 켜짐 HttpWebResponse
하다 ~ 아니다 똑같이하십시오 Close()
이는 실제로 여기서 의미 론적 차이가 있음을 의미합니다.
Using
일반적으로 객체가 범위를 벗어날 때 즉시 객체가 사용하는 리소스를 공개하는 이점이 있습니다. 이것은 GDI+ 또는 파일 핸들과 같은 것들에 유용하지만 HttpWebResponse
조금 다를 수 있습니다. 그 특정 대상에 대해 충분히 알지 못하는 것은 내 추측은 Close()
실제로 자원을 공개하지 않으므로 필요하지 않습니다. Dispose()
전화 Close()
도. 그리고 그 행동에 대한 유효한 이유가있을 수 있습니다.
제휴하지 않습니다 StackOverflow