7

私は、.NETのHttpWebRequest/型の上に流暢な REST クライアント インターフェイスを構築する作業を行っています。HttpWebResponseこれまでのところ、とても良いです...しかし、セキュリティトークンのネゴシエーション、トークンの更新などを自動的に処理できるプラグイン可能なセキュリティフレームワークを開発しようとしています.

HttpWebRequest/Response400 シリーズまたは 500 シリーズの HTTP ステータス コードに遭遇したときの動作の性質上、問題が発生しました。.StatusCodeおよびプロパティを単に設定して.StatusDescription、任意の方法で処理できるようにするのではなく、WebException. 一般的に言えば、これはおそらく問題ではありませんが、認証方法 (OAuth 2.0 の派生) に関係なく、例外が発生することなく特定の 400 シリーズ エラーを処理する必要があります。

HttpWebRequest/Response を NOT throw に再構成しWebException、消費者が独自のエラー処理を決定できるようにする方法はありますか? 古い Http1.0 サーバーで Expect-100-Continue を処理するためのいくつかのラウンド アバウトな方法があることは知っています。

(ああ、そしてただ我慢できない...ライセンスに縛られたReflector 6の無料版を不法に持ち去ったRedGateの素晴らしい友人たちに大声で叫ぶ...私はこれを理解できるかもしれない自分でコードをスヌープできれば...しかし悲しいかな...リフレクターは、自己分解によってそれ自体を消費してしまったので、悲しいことに実行不可能なオプションです.;P )

4

1 に答える 1

8

同様の問題があり、次のヘルパー メソッドで解決しました。

public static HttpWebResponse MakeRequest(HttpWebRequest request)
{
    try
    {
        return (HttpWebResponse)request.GetResponse();
    }
    catch (WebException we)
    {
        if (we.Response != null)
        {
            return (HttpWebResponse)we.Response;
        }
        throw;
    }
}
于 2011-06-08T12:52:16.430 に答える