【问题标题】:MVC Web .Net: Intercept all calls before reaching controller?MVC Web .Net:在到达控制器之前拦截所有调用?
【发布时间】:2013-04-10 17:22:59
【问题描述】:

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

【问题讨论】:

标签: asp.net .net


【解决方案1】:

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

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

public class YourController : ApplicationController
{

}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 使用这种方法,你能指定你想为哪些路线这样做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多