ActionFilter を使用して、ASP.NET Web API プロジェクトのすべてのアクション コールをログに記録しています。OnActionExecuted メソッドは、何が起こっているかについて多くのことを伝えます。
実行時間を測定する効率的な方法を見つける方法がわかりません...
ActionFilter を使用して、ASP.NET Web API プロジェクトのすべてのアクション コールをログに記録しています。OnActionExecuted メソッドは、何が起こっているかについて多くのことを伝えます。
実行時間を測定する効率的な方法を見つける方法がわかりません...
このような何かがうまくいくはずです...
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
、リクエスト プロパティに new を保存し、リクエストが完了したら停止します。