我有下面的处理程序,
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();
}
}
答案 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。