당신은 HttpContext.RemapHandler
를 사용할 수 있지만 경우 다른 HttpHandler
전화 RemapHandler
(PostResolveRequestCache
에 MvcHandler
을 등록 예를 들어, ASP.NET MVC) 당신의 IHttpModule
않습니다 화재. 아마도 IHttpHandler.Process
이 호출 된 적이없는 것일 수 있습니다. 이 문제의 경우
, 당신은 단순히 다음과 같이 MvcApplication.RegisterRoutes
에 무시하는 경로를 정의 할 수 있습니다 :
routes.IgnoreRoute("your_path/{*pathInfo}");
을 또한, 비주얼 스튜디오 웹 개발 서버와 IIS6와 함께, RemapHandler
이 작동하지 않습니다 기억 . 여기
세션에 액세스 할 수 여전히 활성화되어 있는지의 여부를 통합 파이프 라인에 기초하여, 처리기를 매핑하는 적당한 방법을 선택하는 방법의 예이다 :
public void Init(HttpApplication application)
{
if (HttpRuntime.UsingIntegratedPipeline)
// For IIS 7 and IIS 8
application.PostAuthorizeRequest += Application_PostAuthorizeRequest;
else
// For IIS 6
application.PostMapRequestHandler += Application_PostMapRequestHandler;
}
private void Application_PostAuthorizeRequest(object sender, EventArgs e)
{
((HttpApplication)sender).Context.RemapHandler(_myHandler);
}
private void Application_PostMapRequestHandler(object sender, EventArgs e)
{
((HttpApplication)sender).Context.Handler = _myHandler;
}
HttpHandlerFactory
을 사용하여 차이점 이 경우 HttpModule
은 ASP.NET IHttpHandler
매핑과 관계없이 IHttpHandler
을 사용할시기를 결정할 수 있다는 점에서 다릅니다. MSDN에 대한 추가 정보 : HTTP Handlers and HTTP Modules Overview.
명확한 답변, 특히 mvc 처리기에 대한 부분!. Thnx! –
.NET 2.0 서비스 팩 2를 적용한 경우 RemapHandler가 PostAuthorizeRequest에서 올바르게 작동합니다. –