3

サーバーに対していくつかのリクエストを実行して、それらのリクエストが適切にブロックされていることを確認する必要があるアプリケーションがあります。つまり、予想されるサーバーの応答は 403 Forbidden です。

次のようなコードを使用します。

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage);
httpRequest.Method = WebRequestMethods.Http.Head;
WebResponse response = HttpRequest.GetResponse();

aWebExceptionが最後の行にスローされます。

コードをプロファイリングするとき、try/catch ブロック内のこの例外は、回避したいパフォーマンスへの影響をもたらします。

例外をキャッチせずに (ただし、ソケットを直接使用しないで)、403 を期待してサーバーの応答を確認する方法はありますか?

4

2 に答える 2

3

残念ながら、これはフレームワークの厄介な例外HttpWebRequestであり、(クラスを使用している間は)それを回避する方法はありません。ただし、Highが指摘したように、この例外処理にはナノ秒かかりますが、Webリクエスト自体には(せいぜい)ミリ秒かかるので、心配する必要はありません。

WebExceptionオブジェクトには、Response応答を含むプロパティがあります。例外を処理するときは、そのオブジェクトを破棄することが重要ですWebResponse(接続のリークを回避するため)。

于 2010-12-05T05:06:01.507 に答える
2

プロファイリングで時間がかかっているのは、おそらく例外をキャッチする部分ではなく、Web サイトからの実際の応答です。

WebException.Status プロパティは、HTTP 応答のステータス コードを提供し、それに基づいてさらに処理を行うことができます。

于 2010-12-05T12:12:49.127 に答える