Длительность действия ASP Web API

Я использую ActionFilter для регистрации всех вызовов действий моего проекта ASP.NET Web API. Метод OnActionExecuted много рассказывает о том, что происходит.

Я просто не могу понять, как найти эффективный способ измерения времени выполнения...

Спасибо за любую помощь!

Ответ 1

Что-то вроде этого должно сделать трюк...

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);
    }
}

Здесь мы сохраняем новый Stopwatch в свойствах запроса и останавливаем его, когда запрос завершен.