0
asp.net mvc5のほとんどすべてのアクションの実行時間を記録しますが、基本的にこれを下のコードで行うのは正しい方法ですか?それともプロジェクトが非常に遅くなりますか?なにか提案を?カスタムアクションフィルタを使用して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);
}
に値をキャストすることができ、それは間違いなくあなたのコードが遅くすることはありません。あなたはconcurencyの問題があるかもしれません。個別のフィルタインスタンスが各リクエストに対して作成されているかどうかはわかりません。そうでなければ、複数のリクエストがあった場合、正しく測定できない可能性があります。並行処理の問題を避けるために、タイミングを辞書またはコンテキスト自体に保存する必要があります。 – Jim
@Jim同時実行性の問題を避けるために、タイミングが辞書になければならないというあなたの主張に感謝します。 – mayk
リクエストごとに使用されていると思いますが、例外が発生した場合はどうなりますか? – Legends