Dan*_*Dan 14 asp.net-mvc mvc-mini-profiler
我一直在试验这个伟大的工具,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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我认为这不是我想做的事情吗?我想我需要启动分析器OnActionExecuting并将其停止OnResultExecuted.考虑到探查器旨在与using声明一起使用,我该如何做到这一点.
Dar*_*rov 24
您可以定义全局操作过滤器:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
并注册Global.asax:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new ProfileActionsAttribute());
}
Run Code Online (Sandbox Code Playgroud)
这就是全部.
| 归档时间: |
|
| 查看次数: |
2189 次 |
| 最近记录: |