是否有一种快速方法可以拦截 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());
}
我现在就去看看是否能找到来源。
Edit:找到了。原来是从这个问题 https://stackoverflow.com/questions/3569873/asp-net-mvc-actionfilter.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)