加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – 如何拦截MVC应用程序中的所有控制器调用?

发布时间:2020-12-15 23:01:43 所属栏目:asp.Net 来源:网络整理
导读:是否有一种快速方法来拦截MVC-3中的所有控制器调用? 为了记录和测试,我想建立一个可以拦截所有控制器调用的工具,并记录哪个控制器被调用,哪个消息在什么时间. 解决方法 我不记得我从哪里得到这个,但是我正在寻找类似的东西,发现一个文章或某处包含这个记录
是否有一种快速方法来拦截MVC-3中的所有控制器调用?

为了记录和测试,我想建立一个可以拦截所有控制器调用的工具,并记录哪个控制器被调用,哪个消息在什么时间.

解决方法

我不记得我从哪里得到这个,但是我正在寻找类似的东西,发现一个文章或某处包含这个记录过滤器的东西:
public class LogActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        Log("OnActionExecuting",filterContext.RouteData);
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        Log("OnActionExecuted",filterContext.RouteData);
    }

    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        Log("OnResultExecuting",filterContext.RouteData);
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        Log("OnResultExecuted",filterContext.RouteData);
    }

    private void Log(string methodName,RouteData routeData)
    {
        var controllerName = routeData.Values["controller"];
        var actionName = routeData.Values["action"];
        var message = string.Format("{0} controller: {1} action: {2}",methodName,controllerName,actionName);
        Debug.WriteLine(message,"Action Filter Log");
    }
}

要使用它,只需将其添加到global.asax中的全局过滤器:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new LogActionFilter());
}

我现在来看看是否可以找到源.

编辑:找到它.是从this question.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读