2011-03-15 3 views
1

대부분의 브라우저는 HTTP GET 및 POST 만 지원하므로 HTTP 메서드를 다시 작성할 수있는 HttpHandler가 있으면 유용합니다. ASP .NET을 사용하여 HTTP 메서드 다시 작성

HTTP 메소드

은 숨겨진 필드로 설정됩니다 : 사용자가 제출

<form method="POST" action="..."> 
    <input type="hidden" name="_method" value="PUT"> 
    ... 
</form> 

경우 POST 요청을 전송하고 IHttpHandler는 요청 HttpMethod를 교체해야하지만, 그것은 read-only property in .NET이다.

.NET에서 HTTP 메서드를 다시 작성하려면 어떻게해야합니까?

답변

2

mvc (ver 2+)에서는 HtmlHelper.HttpMethodOverride 도우미를 사용하여 필요한 작업 방법으로 숨겨진 입력 값을 생성 할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ee402924.aspx

이 (삭제를위한)이 숨겨진 입력 생성 :
<input name="X-HTTP-Method-Override" type="hidden" value="DELETE" />

좀 더 많은 정보를 원하시면 :

http://geekswithblogs.net/michelotti/archive/2010/01/08/implementing-a-delete-link-with-mvc-2-and-httpmethodoverride.aspx

UPDATE :

깊이로 조금 상대를 이것이 MVC 파이프 라인에서 어떻게 작동하는지 사실 내가 전에 생각한 것처럼 RouteModule이 아닌 MVC (ActionMethodSelectorAttribute, ActionInvoker, RedirectToRoute)입니다.

MVC 소스 (codeplex에서)에서 찾아 볼 수 있습니다 ... 아주 당당합니다. 더 흥미로운 부분은 HttpRequestBaseExtensions 및 HttpRequestExtensions에 있습니다.

0

방정식의 서버 측을 이미 제어하는 ​​경우이 작업을 수행하기 위해 프록시 서버를 작성하지 않는 이유는 무엇입니까? 무거운 짐을 지우려면 FiddlerCore과 같은 것을 사용할 수 있습니다.

다양한 응용 프로그램에서 재사용 할 수 있으며 반드시 IIS 및 .NET에 한정 될 필요는 없습니다.

0

HttpContext.Current.Request.RequestType을 사용할 수 있습니다. 이 속성은 읽기 전용이 아니므로 C#에서이 속성을 변경할 수 있습니다.

자세한 내용은 check this을 참조하십시오.