Ich sehe ELMAH zum ersten Mal an, habe aber eine Anforderung, die erfüllt werden muss, da ich mir nicht sicher bin, wie ich das erreichen soll ...
Im Grunde werde ich ELMAH so konfigurieren, dass es unter asp.net MVC arbeitet und es dazu bringt, Fehler in der Datenbank zu protokollieren, wenn sie auftreten. Obendrein benutze ich customErrors, um den Benutzer auf eine freundliche Nachrichtenseite zu lenken, wenn ein Fehler auftritt. Ziemlich Standard Zeug ...
Die Anforderung ist, dass ich auf dieser benutzerdefinierten Fehlerseite ein Formular habe, das es dem Benutzer ermöglicht, zusätzliche Informationen bereitzustellen, wenn sie dies wünschen. Jetzt entsteht das Problem aufgrund der Tatsache, dass der Fehler zu diesem Zeitpunkt bereits protokolliert ist und ich den ausgelagerten Fehler mit der Benutzerrückmeldung verknüpfen muss.
Normalerweise, wenn ich meine eigene benutzerdefinierte Implementierung verwendete, würde ich, nachdem ich den Fehler protokolliert habe, die ID des Fehlers an die benutzerdefinierte Fehlerseite übergeben, damit eine Verknüpfung hergestellt werden kann. Aber wegen der Art und Weise, wie ELMAH funktioniert, glaube ich nicht, dass das Gleiche möglich ist.
Deshalb habe ich mich gefragt, wie die Leute dachten, dass man das tun könnte ....Prost
UPDATE:
Meine Lösung für das Problem ist wie folgt:
%Vor%Dann, wenn der Fehler auftritt, habe ich so etwas in meinem Global.asax:
%Vor%Dann, wo auch immer Sie später sind, können Sie die Details durch
herausziehen %Vor%Beachten Sie, dass dies nicht zu 100% perfekt ist, da es für dieselbe IP-Adresse möglich ist, dass mehrere Anfragen gleichzeitig Fehler enthalten. Aber die Wahrscheinlichkeit, dass das passiert, ist gering. Und diese Lösung ist unabhängig von der Sitzung, was in unserem Fall wichtig ist, auch einige Fehler können dazu führen, dass Sitzungen beendet werden usw. Daher hat sich dieser Ansatz für uns bewährt.
Das ErrorLogModule
in ELMAH (Version 1.1 zum Zeitpunkt der Erstellung) bietet eine Logged
Ereignis, das Sie in Global.asax
behandeln können und mit dem Sie Details kommunizieren können, zum Beispiel über HttpContext.Items
Sammlung zu Ihrer benutzerdefinierten Fehlerseite. Wenn Sie ErrorLogModule
unter dem Namen ErrorLog
in web.config
registriert haben, wird Ihr Ereignishandler in Global.asax
wie folgt aussehen:
Tags und Links asp.net-mvc error-handling elmah custom-error-pages