asp.net-mvc – 对每个动作调用使用MVC Miniprofiler

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 对每个动作调用使用MVC Miniprofiler前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在尝试伟大的工具,Mvc MiniProfiler.

我不想用大量的Step命令来抛弃我所有的观点,所以我想在每个动作调用中使用分析器.馊主意?这是我迄今为止所尝试过的

public abstract class BaseController : Controller
 {
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var profiler = MiniProfiler.Current;
            using (profiler.Step("Action: "+filterContext.ActionDescriptor.ActionName))
            {
                base.OnActionExecuting(filterContext);
            }
        }
}

但我不认为这是在做我正在打算的事情?我想我需要在OnActionExecuting上启动分析器,并在OnResultExecuted上停止.如何做到这一点,考虑到profiler被设计为与using语句一起使用.

解决方法

您可以定义全局动作过滤器:
public class ProfileActionsAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var profiler = MiniProfiler.Current;
        var step = profiler.Step("Action: " + filterContext.ActionDescriptor.ActionName);
        filterContext.HttpContext.Items["step"] = step;
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var step = filterContext.HttpContext.Items["step"] as IDisposable;
        if (step != null)
        {
            step.Dispose();
        }
    }
}

并在Global.asax注册

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

这几乎都是.

猜你在找的asp.Net相关文章