0

RFC 2616 HTTP/1.1 definition 상태는 다음과 같은 일반적인 HTTP 방법은 존재 :System.Web.Mvc.HttpVerbs 클래스에 TRACE, CONNECT & OPTIONS가없는 이유는 무엇입니까?

GET, HEAD, POST는, PUT, DELETE, TRACE, OPTIONS,

그러나 System.Web.Mvc.HttpVerbs 열거없는 TRACE, OPTIONS & CONNECT를 연결합니다.

요청에서 특정 요청을 처리하기 위해 요청에서 HttpVerb를 선택하는 작업 필터가 있습니다 (예 : 요청에서 기본 유형 A의 모델을 PUT하는 경우 일부 데이터를 설정 함).

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"); 
    } 
} 

확실하지 어떻게 해결하기 위해 - 어떤 아이디어 : - (이 구글에서 오는 것처럼 보이는 대부분 옵션) 그래서이 유틸리티 코드는 마지막 세의 요청에 대한 ArgumentOutOfRangeException을 던지고있다?

내가 생각할 수있는 것은 원시 HTTP 메소드를 먼저 확인하고, 추적, 옵션 또는 연결이 아닌 경우에만 유틸리티를 호출하는 모든 참조 코드를 변경하는 것입니다. 좀 해커 야.

열거 형 클래스에서 누락 된 이유가 무엇입니까? 특별한 이유가 있습니까? MVC 단순히 이러한 유형의 요청을 처리 할 수 ​​있습니다?

OPTIONS 메서드의 소리로 MVC에 도달하지 않아야하며 IIS 자체에서 처리해야합니까?

답변

0

내 열거 형을 생성하여 사용했습니다.

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

MVC는 여전히 OPTIONS 유형의 요청을 처리하는 것으로 보입니다.

관련 문제