Ich möchte die Ausführungszeit von fast allen Aktionen in asp.net mvc5 protokollieren, aber im Grunde tun dies mit unten Code ist der richtige Weg oder macht es das Projekt sehr langsam? Irgendein Vorschlag?Wie berechnet man alle Action-Laufzeit in asp.net mvc5 mit benutzerdefinierten Aktion Filter?
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);
}
dies scheint mir, ok, es wird auf jeden Fall nicht, Ihren Code langsamer. Sie könnten jedoch ein Problem mit der Verständigung haben. Ich bin nicht sicher, dass eine separate Filterinstanz für jede Anfrage erstellt wird. Wenn nicht, könnten Sie falsche Messungen haben, sobald mehrere Anfragen vorliegen. Möglicherweise müssen Sie die Timings in einem Wörterbuch oder im Kontext selbst speichern, um Nebenläufigkeitsprobleme zu vermeiden. – Jim
@Jim Vielen Dank für Ihre Vorschläge, die Timings sollten im Wörterbuch vorhanden sein, um Nebenläufigkeitsprobleme zu vermeiden. – mayk
Ich denke, es wird pro Anfrage verwendet, aber was passiert, wenn eine Ausnahme auftritt? – Legends