Почему System.web.mvc.httpverbs Class отсутствует трассировку, подключение и опции?
-
26-10-2019 - |
Вопрос
А RFC 2616 HTTP/1.1 Определение утверждает, что существуют следующие общие методы HTTP:
Получить, головы, публиковать, положить, удалить, трассировать, параметры, подключение
Но System.web.mvc.httpverbs enum отсутствует трассировку, опции и подключение.
У меня есть фильтр действий, который выбирает httpverb из запроса, чтобы принимать определенные решения (например, если запрос поместит модель базового типа A, я установил некоторые данные), так что этот утилита код бросает аргумент в пользу запросов за запросы последних трех (в основном варианты - выглядит так, как будто он поступает из Google Translate):
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, а затем вызовуте утилиту, только если он не является трассировкой, опциями или подключением. Что немного взломан.
Почему в классе Enum не хватает? Есть ли конкретная причина для этого? Может ли MVC просто не обрабатывать запросы этих типов?
Из -за звуков метода параметров он даже не должен добраться до MVC, и с ним следует обрабатывать самим IIS?
Решение
В итоге создал свой собственный перевод и использовал это.
public enum HttpVerb
{
Get,
Head,
Post,
Put,
Delete,
Trace,
Options,
Connect
}
MVC все еще, кажется, обрабатывает запросы параметров типа.