指定したとおりに使用できますHttpContext.RemapHandler
が、別のHttpHandler
呼び出し(たとえば、登録するRemapHandler
ASP.NET MVC )が発生した場合、起動することはありません。これがおそらく呼び出されなかった理由です。MvcHandler
PostResolveRequestCache
IHttpModule
IHttpHandler.Process
これが問題である場合は、次のMvcApplication.RegisterRoutes
ように無視するルートを定義するだけです。
routes.IgnoreRoute("your_path/{*pathInfo}");
また、Visual Studio Web Development Serverおよび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
は、後者を使用するとIHttpHandler
、ASP.NETIHttpHandler
マッピングに関係なく、どちらをいつ使用するかを決定できることです。MSDNの詳細:HTTPハンドラーとHTTPモジュールの概要。