Wie protokolliere ich EntityValidation-Fehler mit ELMAH MVC?

8

Ich habe eine Anwendung mit MVC4 und EF5.x geschrieben und ELMAH für die Protokollierung von Ausnahmen zur Überprüfung verwendet. Wir haben die Anwendung vor kurzem freigegeben, und wie erwartet, füllte sich das ELMAH-Protokoll mit mehreren Dutzend Ausnahmen. Großartig (und nicht)! Das Problem ist, dass eine dieser Ausnahmen

ist %Vor%

Natürlich gibt es keine Möglichkeit, die EntityValidationErrors Eigenschaft für mehr Details zu sehen und der Stack-Trace wickelt bis zu meinem SubmitChanges ()

Ich weiß, dass ELMAH die Möglichkeit hat, es uns zu ermöglichen, eigene Ausnahmen zu erheben und in gewisser Weise anzupassen, was eingeloggt wird und wie. Leider bin ich immer noch sehr neu bei ELMAH und MVC und eine Google-Suche ergab nichts Relevantes. Ich habe ein Blog-Artikel Protokollierung EntityValidationErrors finden, und der Autor ausdrücklich erwähnt, dass er schreiben, wie in ELMAH so zu tun, aber das wurde geschrieben im September 2012 und ich habe seitdem nichts mehr gesehen.

Jede Hilfe würde sehr geschätzt werden!

    
Elsimer 11.04.2013, 04:22
quelle

5 Antworten

9

Wahrscheinlich ist es in diesem Fall am besten, wenn Sie Ihren context.SaveChanges(); -Aufruf in einen try...catch -Block einbinden und dann die einzelnen Elemente aus den ValidationExceptions protokollieren. Etwas wie das folgende sollte dich beginnen:

%Vor%     
Paige Cook 17.04.2013, 12:22
quelle
5

Wie wäre es mit dieser Erweiterungsmethode, die auf dem obigen basiert?

%Vor%

Elmah wird dann eine viel bessere Ausnahme im Protokoll haben

    
Original10 24.06.2015 10:25
quelle
2

Ich habe meinem Global.asax.cs Folgendes hinzugefügt, um alle DbEntityValidationException -Ausnahmen an Elmah über meine MVC-Anwendung weiterzuleiten:

%Vor%

Ein Teil dieses Codes wurde in @ Paige Cooks und @ Original10s Posts wiederverwendet.

    
Mau5 29.06.2015 07:57
quelle
1

Nach dem unten stehenden Code erneut zu werfen ist nicht perfekt (obwohl es mir nichts ausmacht, den Call-Stack hier zurückzusetzen, da Elmahs protokollierte Details der angegebenen Adresse mir zeigen werden, was zu der Exception geführt hat) Erarbeiten Sie Ihre eigenen Sicherheitsimplikationen, aber das ist ziemlich kurz gefasst & amp; erfüllt meine Bedürfnisse:

%Vor%     
Brent 13.09.2016 01:45
quelle
0

Hier ist meine Implementierung für die Global Web API Lösung für Elmah und EF Validierungsfehler:

%Vor%

und dann registriere ich das Attribut in der WebApiConfig.cs Datei unter App_Start

%Vor%     
Zapnologica 14.03.2016 19:34
quelle