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

时间:2016-07-01 07:44:00

标签: c# asp.net-mvc-5 stopwatch asp.net-mvc-custom-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);
    }

1 个答案:

答案 0 :(得分:2)

我可能会将时间存储在适当范围的位置,也许是在请求中。

per request

这样你可以避免使用繁琐的字典,并且你的计时器是OnActionExecuted

然后您可以在 var sw = filterContext.HttpContext.Items["timer"] as Stopwatch; sw.ElapsedMilliseconds...

中转换值
find . -daystart -type f -mtime 1