【发布时间】:2013-04-10 17:22:59
【问题描述】:
我有一个 .Net MVC Web 应用程序(不是 WebAPI),我想在 Web 应用程序到达控制器之前拦截所有对 Web 应用程序的调用,检查请求标头中的值,如果值不是,则执行一些操作t 呈现(例如呈现 404)。这样做的理想方法是什么?请记住,这不是一个 Web API 应用程序,只是一个简单的 Web 应用程序。
【问题讨论】:
-
检查完值后,是否要将请求传递给控制器?
我有一个 .Net MVC Web 应用程序(不是 WebAPI),我想在 Web 应用程序到达控制器之前拦截所有对 Web 应用程序的调用,检查请求标头中的值,如果值不是,则执行一些操作t 呈现(例如呈现 404)。这样做的理想方法是什么?请记住,这不是一个 Web API 应用程序,只是一个简单的 Web 应用程序。
【问题讨论】:
根据您具体想要做什么,您可以使用所有其他控制器扩展的默认控制器。这样您就可以覆盖 OnActionExecuting 或 Initialize 并在那里进行检查。
public class ApplicationController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
//do your stuff here
}
}
public class YourController : ApplicationController
{
}
【讨论】:
您正在寻找全局操作过滤器。
创建一个继承 ActionFilterAttribute 的类,覆盖 OnActionExecuting() 以执行您的处理,并将实例添加到 Global.asax.cs 中的全局过滤器集合(在 RegisterGlobalFilters() 内)
【讨论】: