Ich muss Protokollaufrufe zu meiner Web-API überwachen, idealerweise möchte ich ein Attribut verwenden, etwa wie folgt:
%Vor%Das Attribut sollte in der Lage sein, den API-Aufruf vor und nach der Ausführung abzufangen, um die Parameter zu protokollieren und auch, wie lange der API-Aufruf dauerte.
Mit MVC konnte ich ein ActionFilterAttribute-Derivat erstellen und OnActionExecuted und OnActionExecuting überschreiben.
Ist das Äquivalent in der Web-API-Welt möglich?
Ich würde einen Message-Handler anstelle von Attributen verwenden.
%Vor% Der HTTP-Nachrichtenhandler sollte für solche Zwecke ein guter erweiterbarer Punkt sein. Seien Sie jedoch vorsichtig, da es Probleme beim gleichzeitigen Lesen von Anfrage-Inhalten geben kann. Zum Beispiel könnte Model Binder versuchen, Request-Inhalt zu lesen, während LoggingHandler
es liest und die Deserialisierung eines Modells fehlschlägt. Um solche Probleme zu vermeiden, fügen Sie der LogRequestLoggingInfo-Methode nur den Wait-Aufruf hinzu.
Sie können mehr darüber hier lesen .
Ich denke, dass Sie interessiert sein werden, sich die Web-API-Verfolgung anzusehen. Ссылка . Es ermöglicht Ihnen, in den internen Mechanismus der Web-API zu schauen.
In Ihrem Fall gehe ich davon aus, dass Sie besonders an der Eingabe und Ausgabe von Aktionen interessiert sind. So können Sie Ihren TraceWriter wie das folgende Beispiel korrigieren, um die redundanten Informationen herauszufiltern:
%Vor%Ich habe an einer Bibliothek gearbeitet, mit der Sie Interaktionen mit ASP.NET-Web-API-Controllern mithilfe von Aktionsfiltern protokollieren können.
Es kann Aufrufe von Aktionsmethoden mit Anruferinformationen, Argumenten, Ausgaben, Dauer, Ausnahmen und mehr aufzeichnen.
Sehen Sie sich Audit.WebApi an.
>Tags und Links asp.net-web-api c# asp.net