System.web.mvc.httpverbsクラスがトレース、接続、オプションが欠落しているのはなぜですか?

StackOverflow https://stackoverflow.com/questions/9321021

質問

RFC 2616 HTTP/1.1定義 次の一般的なHTTPメソッドが存在すると述べています。

取得、ヘッド、ポスト、プット、削除、トレース、オプション、接続

しかし System.Web.Mvc.httpverbs 列挙にはトレース、オプション、接続がありません。

特定の決定を下すために(たとえば、リクエストがベースタイプAのモデルを配置している場合、データを設定します)、このユーティリティコードを行うために、リクエストからHTTPVerbを選択するアクションフィルターがあります。最後の3つのリクエストに対してargupeTOUTOFRANGEEXCEPTIONを投入しています(ほとんどがオプション - Google翻訳から来ているように見えます):

public static HttpVerbs GetHttpVerb(this HttpRequestBase httpRequestBase)
{
    switch (httpRequestBase.HttpMethod)
    {
        case "GET":
            return HttpVerbs.Get;
        case "POST":
            return HttpVerbs.Post;
        case "PUT":
            return HttpVerbs.Put;
        case "DELETE":
            return HttpVerbs.Delete;
        case "HEAD":
            return HttpVerbs.Head;    
        default:
            throw new ArgumentOutOfRangeException("httpRequestBase");
    }
}

これを回避する方法がわかりません - 何かアイデアはありますか?

私が考えることができるのは、すべての参照コードを変更して最初にRAW HTTPメソッドをチェックし、次にトレース、オプション、または接続でない場合にのみユーティリティを呼び出すことです。ちょっとハッキーです。

なぜenumクラスに欠けているのですか?それに具体的な理由はありますか? MVCは、これらのタイプのリクエストを単に処理できませんか?

Optionsメソッドの音では、MVCに到達することすらできず、IIS自体によって処理されるはずですか?

役に立ちましたか?

解決

最終的に自分の列挙を作成し、それを使用しました。

public enum HttpVerb
{
    Get,
    Head,
    Post,
    Put,
    Delete,
    Trace,
    Options,
    Connect
}

MVCはまだタイプオプションの要求を処理しているようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top