我宁愿使用MVC 过滤器进行分析,因为 MVC 过滤器允许添加预处理和后处理行为,并且filterContext参数应该为您提供足够的信息。
例如,我会为分析创建 ProfilerAttribute
public class ProfilerAttribute : FilterAttribute, IActionFilter, IResultFilter, IExceptionFilter {
public void OnActionExecuting(ActionExecutingContext filterContext) {
Debug.WriteLine("Before Action is executing");
}
public void OnActionExecuted(ActionExecutedContext filterContext) {
Debug.WriteLine("After Action is executed");
}
public void OnResultExecuted(ResultExecutedContext filterContext) {
Debug.WriteLine("After Action Result is executed");
}
public void OnResultExecuting(ResultExecutingContext filterContext) {
Debug.WriteLine("Before Action Result is executing");
}
public void OnException(ExceptionContext filterContext) {
Debug.WriteLine("oops! exception");
}
}
并在Global.ascx中注册为GlobalFilter ....
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
filters.Add(new HandleErrorAttribute());
filters.Add(new ProfilerAttribute());
}
希望它可以提供帮助。谢谢。
更新:忘了提到 MVC 过滤器仅在路由匹配后执行。因此,您不需要过滤掉静态资源,因为它已经由 MVC 完成。