5

Webプロキシエラーが原因でWebRequestが失敗し、対象のWebサーバーエラーが発生していないことを検出するにはどうすればよいですか?WebRequestのHTTPプロキシエラーを検出しました

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 
} 

答えて

3

それは困難です。

  • webex.Response.ResponseUriプロパティには、連絡しようとしていたサーバーではなく、プロキシサーバーのURIが含まれています。
  • は、のプロキシの問題を指します。 ProxyAuthenticationRequired。残念ながら、ほとんどのステータスは、プロキシエラーまたはサーバーエラーのいずれかを参照する可能性があります。
  • webex.Response.Headersコレクションには、プロキシサーバーによって生成されたものとして認識される非標準のエントリが含まれています。たとえば、Squidプロキシはヘッダー"X-Squid-Error"を返します。独自のステータスセットを持ちます。
  • webex.Response.ResponseStreamストリームには、プロキシサーバーによって生成されたと認識する形式のHTMLまたはプレーンテキストのエラーメッセージが含まれています。プロキシサーバーのURIが含まれているかどうかをテストすることができます。

キャッチブロックで、上記のすべてのプロパティを含むWebExceptionオブジェクトの完全な詳細を記録するようにしてください。ログデータを分析し、プロキシエラーの正確なテストを作成することができます。

1

私はあなたがInvalidOperationExceptionを捕まえ、メッセージに「プロキシ」をチェックできると思います。

メッセージは言う:

プロキシ名を解決できませんでした: 'localhost' の

+0

はい、「プロキシ」や例外メッセージの実際のプロキシアドレスなどの特定のキーワードをチェックすることは選択肢ですが、「より決定的」なものを探していました。 – AlexMinza

+0

賢いアプローチではありませんが、InvalidOperationExceptionしたがって、あなたに非常に多くを提供しません! –

関連する問題