的RFC 2616 HTTP/1.1 definition指出以下常見的HTTP方法有:爲什麼System.Web.Mvc.HttpVerbs類缺少TRACE,CONNECT&OPTIONS?
GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,CONNECT
但System.Web.Mvc.HttpVerbs枚舉缺少TRACE,OPTIONS & CONNECT。
我有一個操作過濾器,它從請求中獲取HttpVerb以做出某些決定(例如,如果某個請求是PUT'ing基本類型A的模型,那麼我設置了一些數據),所以該實用程序代碼被拋出ArgumentOutOfRangeException在過去三年的要求(主要是OPTIONS - 看起來像是從谷歌來翻譯):
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");
}
}
不知道如何解決這個問題 - 任何想法?
我唯一能想到的就是改變所有參考代碼,先檢查原始的HTTP方法,然後只調用實用工具,如果它不是TRACE,OPTIONS或CONNECT。這有點哈克。
爲什麼它從枚舉類中丟失?它有一個特定的原因嗎? MVC可以不處理這些類型的請求嗎?
通過OPTIONS方法的聲音,它甚至不應該得到MVC,它應該由IIS本身處理?