System.web.mvc.httpverbsクラスがトレース、接続、オプションが欠落しているのはなぜですか?
-
26-10-2019 - |
質問
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はまだタイプオプションの要求を処理しているようです。
所属していません StackOverflow