MVC Web .Net:在到达控制器之前拦截所有呼叫?

时间:2013-04-17 19:33:52

标签: asp.net .net

我有一个.Net MVC Web应用程序(非WebAPI),我希望在它们到达控制器之前拦截对Web应用程序的所有调用,检查请求标头中的值,如果值为n,则执行某些操作存在(例如呈现404)。这样做的理想方法是什么?请记住,这不是一个Web API应用程序,只是一个简单的Web应用程序。

2 个答案:

答案 0 :(得分:6)

根据您的具体要求,您可以使用所有其他控制器扩展的默认控制器。这样您就可以覆盖OnActionExecutingInitialize并在那里进行检查。

public class ApplicationController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //do your stuff here
    }
}

public class YourController : ApplicationController
{

}

答案 1 :(得分:3)

您正在寻找全局动作过滤器。

创建一个继承ActionFilterAttribute的类,重写OnActionExecuting()以执行处理,并在Global.asax.cs中添加实例到全局过滤器集合(在RegisterGlobalFilters()内部)