Fehler werden bei der Verwendung von Elmah mit WebApi doppelt protokolliert

8

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?

    
Twisted 12.03.2013, 09:28
quelle

6 Antworten

4

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: Ссылка

    
DGreen 28.05.2013 14:33
quelle
3

Ich würde Ihre FilterConfig.cs-Klasse überprüfen, ist es möglich, dass das Standard-HandleErrorAttribute dort hinzugefügt wird und Ihre Ausnahme erneut wirft?

    
Po-ta-toe 14.03.2013 09:49
quelle
3

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.

    
Daniel Curtis 11.09.2013 05:24
quelle
0

Haben Sie dieser Beitrag ? Der Autor verwendet einen ExceptionFilter zur Protokollierung von Ausnahmen

    
Abhijeet Patel 21.05.2013 04:14
quelle
0

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.

    
Neil Thompson 24.04.2014 15:55
quelle
0

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.

    
infl3x 26.05.2015 03:17
quelle