0

最近まで、インターネット上にファイルが存在するかどうかを判断するために HttpWebRequest を使用していました。しかし今では、404 が存在しなくてもサーバーで処理でき、デフォルトの 404 サーバー エラー ページしか表示されないことに気付きました。このシナリオでは、HttpWebRequestは例外をスローしません。404 エラーが発生したかどうかを判断する方法が思いつきません。

何か案は?

4

3 に答える 3

2

StatusCodeのとを確認しStatusResponseますHttpWebResponsethrow受け取った値に基づいていつでもできます。

于 2012-11-28T00:47:25.003 に答える
0

GetResponseまたはその非同期の同等物がスローしている場合は、をキャッチするとWebException、便利なプロパティがいくつかあることがわかります。

特に、WebException.Responseは非常に便利です。

于 2012-11-28T00:57:12.257 に答える
0

「ページが見つかりません」ページを返すサーバーで、ブラウザで存在しないファイルを取得して開発ツールを調べようとすると、リターン コードは依然として 404 Not Found です。

通常、メソッドが http 応答コードを返すことを期待しHttpWebRequest.GetResponseますが、代わりに.NET がhttp エラーの例外をスローします。

try {  
    HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
    using (HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse())
    {            
        if (httpRes.StatusCode == HttpStatusCode.OK)
            Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}", httpRes.StatusDescription);
        // Releases the resources of the response.
        httpRes.Close();
    }
}
catch (WebException ex) {
    Console.WriteLine("Error returned: {0}",ex.Response);
    // can throw again here.
    throw;
}
于 2012-11-28T00:48:55.350 に答える