Something như thế này nên làm các trick ...
public class StopwatchAttribute : ActionFilterAttribute
{
private const string StopwatchKey = "StopwatchFilter.Value";
public override void OnActionExecuting(HttpActionContext actionContext)
{
base.OnActionExecuting(actionContext);
actionContext.Request.Properties[StopwatchKey] = Stopwatch.StartNew();
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
Stopwatch stopwatch = (Stopwatch)actionExecutedContext.Request.Properties[StopwatchKey];
// TODO something useful with stopwatch.Elapsed
Trace.WriteLine("Elapsed = " + stopwatch.Elapsed);
}
}
Ở đây chúng ta lưu trữ một mới Stopwatch
trong các thuộc tính yêu cầu và ngăn chặn nó khi yêu cầu đã hoàn thành.
Nguồn
2013-06-12 16:35:59
System.Diagnostics.Stopwatch? – Joe
Ngoài ra, hãy kiểm tra [bài viết này] (https://www.simple-talk.com/dotnet/performance/building-performance-metrics-into-asp.net-mvc-applications/) cho cả API MVC và API Web. –