Ich versuche, Ausnahmen von meinem asp.net Web-API-Projekt mit Elmah zu protokollieren. Ich habe ein Problem, bei dem jeder Fehler zweimal protokolliert wird.
Ich verwende Elmah.Contrib.Web-Api und meine Application-Klasse ist wie folgt:
%Vor%Wenn ich die folgende Zeile austeile, bekomme ich überhaupt keine Nachrichten:
%Vor%Und ich kann bestätigen, dass ich nur einen Fehler erstelle und der Aufruf, der den Fehler erzeugt, wurde nur einmal aufgerufen und ich habe meine Controller oder Methoden nicht manuell mit dem Elmah Attribut versehen.
Um zu versuchen, dies zu lösen, entfernte ich das Contrib-Paket und fügte hinzu, folgte den Anweisungen hier Ссылка
Dies hat das Problem nicht gelöst und es protokolliert immer noch zweimal. Es erlaubte mir, einen Unterbrechungspunkt in die Attributklasse zu setzen und zu bestätigen, dass es für jeden Fehler zweimal aufgerufen wird.
Wie kann ich das lösen?
Welche ELMAH-bezogenen Einträge befinden sich in Ihrer web.config?
Ich hatte ein ähnliches Problem in einer MVC-Anwendung - gehandhabte Ausnahmen wurden zweimal protokolliert. In der Anwendung verwende ich einen benutzerdefinierten Ausnahmefilter, um behandelte Ausnahmen zu ELMAH mit Fehlersignalisierung zu protokollieren, während das HTTP-Modul unbehandelte Ausnahmen behandelt.
Es stellte sich heraus, dass ich folgendes einstellen musste:
%Vor%in web.config, um den integrierten Ausnahmefilter im ELMAH.MVC NuGet-Paket zu deaktivieren.
Der Quellcode für den integrierten Filter zeigt an, dass er behandelte Ausnahmen protokolliert: Ссылка
Für das, was es wert ist, hatte ich das gleiche Problem, dass ELMAH jede Ausnahme zweimal in meiner Web-API-Anwendung (mit Elmah.Contrib.WebApi) protokolliert.
Beim Vergleich meiner ELMAH-E-Mails mit meinem Quellverlauf konnte ich feststellen, dass das Problem nach der Installation des Ninject.Web.WebApi 3.0.2-labil-9016-Pakets über nuget aufgetreten ist.
Tatsächlich hat das Deinstallieren des Pakets und das Auskommentieren der einzelnen Abhängigkeitsbindung, mit der es verwendet wurde, das doppelte Protokollierungsproblem gelöst. Das erneute Installieren des Pakets und das Auskommentieren der Abhängigkeitsbindung führten dazu, dass das Problem erneut gestartet wurde. Daher war es nicht die Bindung selbst.
Das Installieren der vorherigen Version (Ninject.Web.WebApi 3.0.2-unstable-8) verursachte das Problem nicht, aber meine Abhängigkeitsbindung funktionierte nicht mehr.
Ich entscheide mich, vorerst mit dem Problem zu leben.
Haben Sie dieser Beitrag ? Der Autor verwendet einen ExceptionFilter zur Protokollierung von Ausnahmen
Für andere Leute mit der doppelten Protokollierung (ich glaube nicht, dass das dem OP hilft?) - das passierte mir und der Grund war, weil ich den Filter global angewendet hatte
%Vor%hat aber auch das Attribut auf die Klasse angewendet (doh!)
%Vor%Also loggte es natürlich zweimal.
Ich hatte dieses Problem nur bei HTTP 401
-Antworten auftreten. Es stellte sich heraus, dass die Windows-Authentifizierung aktiviert war, was dazu führte, dass der Browser eine zweite Aushandlungsanfrage machte.
In meinem Fall konnte ich die Windows-Authentifizierung nur in der Datei web.config deaktivieren:
%Vor%
Hinweis: Wenn Sie den Konfigurationsabschnitt nicht entsperrt haben, können Sie einfach die Windows-Authentifizierung in IIS deaktivieren.
Tags und Links asp.net-mvc asp.net-web-api elmah