如何使用自定义动作过滤器计算 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
的。
然后您可以将值转换为 OnActionExecuted
var sw = filterContext.HttpContext.Items["timer"] as Stopwatch;
sw.ElapsedMilliseconds...
我想记录 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
的。
然后您可以将值转换为 OnActionExecuted
var sw = filterContext.HttpContext.Items["timer"] as Stopwatch;
sw.ElapsedMilliseconds...