我需要提供哪些Web配置设置来为MVC应用程序中的所有请求调用此自定义处理程序?

时间:2015-08-16 05:11:42

标签: asp.net-mvc httphandler

我有下面的处理程序,

public class ShutdownHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Currently we are down for mantainance");
    }
    public bool IsReusable
    {
        get { return false; }
    }
}

在Asp.net MVC应用程序的每个请求上调用此处理程序需要什么Web配置?

我尝试了一些代码,但无法调用每个请求,

routes.Add(new Route("home/about", new ShutDownRouteHandler()));

public class ShutDownRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return new ShutdownHandler();
    }
}

1 个答案:

答案 0 :(得分:1)

您首先需要一个模块来映射您的处理程序:

public class ShutDownModule : IHttpModule
{
    public void Init(HttpApplication app)
    {
        app.PostResolveRequestCache += (src, args) => app.Context.RemapHandler(new ShutDownHandler());
    }

    public void Dispose() { }
}

然后在你的web.config中:

<system.webServer>
    <modules>
      <add name="ShutDownModule" type="YourNameSpace.ShutDownModule" />
    </modules>
</system.webServer>

MVC是一个端点处理程序,就像WebForms一样。你说,&#34;嘿,不要打电话给MVC处理程序,而是打电话给#34;

为此,您需要拦截已发生的映射并调用MVC,而是调用您自己的处理程序。要拦截管道中的事件,我们使用HttpModules并按上述方式注册它们。

因此,当您的请求永远不会到达时,您可以有效地关闭MVC。