gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:17:09 24 4
gpt4 key购买 nike

有没有一种快速的方法可以拦截 MVC-3 中的所有 Controller 调用?

出于日志记录和测试的目的,我想构建一个可以拦截所有 Controller 调用的工具,并记录调用了哪个 Controller 、使用了哪条消息、在什么时间。

最佳答案

我不记得我是从哪里得到这个的,但我在一段时间前四处寻找类似的东西,发现了一篇文章或某处包含这个日志过滤器的东西:

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 .

关于asp.net-mvc-3 - 如何拦截 MVC 应用程序中的所有 Controller 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com