WebRequest의 HTTP 프록시 오류를 감지하십시오
-
16-09-2019 - |
문제
대상 웹 서버 오류가 아닌 웹 프록시 오류로 인해 WebRequest가 실패했는지 감지하는 방법은 무엇입니까?
try
{
var request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
request.Proxy = new WebProxy("localhost");
var response = request.GetResponse();
return response.GetResponseStream();
}
catch(WebException webex)
{
//Detect proxy failure
}
해결책
가 어렵다. 몇 가지 제안이 있습니다 :
- 그만큼
webex.Response.ResponseUri
속성에는 연락하려는 서버 대신 프록시 서버의 URI가 포함되어 있습니다. - 그만큼
webex.Response.StatusCode
재산은 그 중 하나입니다 언제나 프록시 문제를 나타냅니다ProxyAuthenticationRequired
. 불행히도 대부분의 상태는 프록시 오류 또는 서버 오류를 참조 할 수 있습니다. - 그만큼
webex.Response.Headers
컬렉션에는 프록시 서버에서 생성되는 것으로 인식되는 비표준 항목이 포함되어 있습니다. 예를 들어, 오징어 프록시는 헤더를 반환합니다"X-Squid-Error"
, 자체 독점 상태 세트. - 그만큼
webex.Response.ResponseStream
스트림에는 프록시 서버에서 생성되는 것으로 인식되는 형식의 HTML 또는 일반 텍스트 오류 메시지가 포함되어 있습니다. 프록시 서버의 URI가 포함되어 있는지 테스트 할 수 있습니다.
캐치 블록에서 WebException
위에서 언급 한 모든 속성을 포함하여 객체. 그런 다음 로그 데이터를 분석하고 프록시 오류에 대한 정확한 테스트를 개발할 수 있습니다.
다른 팁
InvalidoPerationException을 잡고 "프록시"에 대한 메시지를 확인할 수 있다고 생각합니다.
메시지는 다음과 같습니다.
프록시 이름은 해결할 수 없습니다 : 'localhost'
제휴하지 않습니다 StackOverflow