我有一个.Net MVC Web应用程序(非WebAPI),我希望在它们到达控制器之前拦截对Web应用程序的所有调用,检查请求标头中的值,如果值为n,则执行某些操作存在(例如呈现404)。这样做的理想方法是什么?请记住,这不是一个Web API应用程序,只是一个简单的Web应用程序。
答案 0 :(得分:6)
根据您的具体要求,您可以使用所有其他控制器扩展的默认控制器。这样您就可以覆盖OnActionExecuting
或Initialize
并在那里进行检查。
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()
内部)