質問

ターゲット 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」の
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top