WebRequest の HTTP プロキシ エラーを検出する
-
16-09-2019 - |
質問
ターゲット Web サーバーのエラーではなく、Web プロキシ エラーが原因で 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
コレクションには、プロキシ サーバーによって生成されたと認識される非標準のエントリが含まれています。たとえば、Squid プロキシはヘッダーを返します。"X-Squid-Error"
, 、独自のステータスのセットを持ちます。 - の
webex.Response.ResponseStream
ストリームには、プロキシ サーバーによって生成されたと認識される形式の HTML またはプレーン テキストのエラー メッセージが含まれています。プロキシ サーバーの URI が含まれているかどうかをテストして確認することもできます。
catch ブロックでは、必ず詳細を完全に記録してください。 WebException
オブジェクトには、上記のすべてのプロパティが含まれます。その後、ログ データを分析し、プロキシ エラーの正確なテストを開発できます。
他のヒント
私はあなたがInvalidOperationExceptionがをキャッチして、「プロキシ」のメッセージをチェックすることができると思います。
メッセージが言うます:
プロキシ名を解決できませんでした。
「localhost」の所属していません StackOverflow