문제

대상 웹 서버 오류가 아닌 웹 프록시 오류로 인해 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'

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top