繁体   English   中英

如何使用自定义动作过滤器计算asp.net mvc5中所有动作的运行时间?

[英]How to calculate all action running time in asp.net mvc5 with custom action filter?

我想在asp.net mvc5中记录几乎所有动作的执行时间,但是基本上使用下面的代码执行此操作是正确的方法,否则会使项目非常缓慢? 有什么建议吗?

    Stopwatch sw = new Stopwatch();
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        sw.Start();
        base.OnActionExecuting(filterContext);
    }
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        sw.Stop();
        float f = sw.ElapsedMilliseconds;
        base.OnActionExecuted(filterContext);
    }

我可能会根据请求将时间存储在适当范围内的位置。

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    filterContext.HttpContext.Items["timer"] = Stopwatch.StartNew();
    base.OnActionExecuting(filterContext);
}

这样,您就可以避免使用繁琐的字典,并且您的计时器基于per request

然后可以在OnActionExecutedOnActionExecuted

        var sw = filterContext.HttpContext.Items["timer"] as Stopwatch;
        sw.ElapsedMilliseconds...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM