Frage

Ich verwende Elmah mit ASP.NET und frage mich, wie ich benutzerdefinierte Daten, z. B. eine Sitzungsvariable, zu einer nicht behandelten Ausnahme -E -Mail hinzufügen würde.

Ich habe mehrere Handler in der Global.asax -Datei ausprobiert, kann aber nicht den richtigen finden.

War es hilfreich?

Lösung

Dafür würde ich denken, Sie müssten die Elmah ändern Quelle und neu kompilieren. Es sollte nicht zu schwer zu erreichen sein. Wenn Sie einen Blick auf den Konstruktor des Elmah.Error Klasse, die HttpContext wird übergeben, aus dem Sie in der Lage sein sollten, die benötigten Informationen, z. B. Sitzungsvariablen usw. zu erhalten Elmah.Error Klasse für diese Daten

Ich denke, die Elmah.ErrorMailHtmlFormatter In der Klasse wird die E -Mail mit a konstruiert HtmlTextWriter, und hier können Sie Code in die einfügen RenderSummary() Methode zur Einbeziehung der benutzerdefinierten Felder, zu denen Sie hinzugefügt wurden Elmah.Error.

Ich weiß, dass es ein Schmerz sein mag, mit der Quelle zu arbeiten, aber ich persönlich denke, es ist der sauberste Weg, da derzeit keine Einrichtung für Berichts-/E -Mail -Vorlagen gibt, und es ist besser, dass etwas an etwas verschraubt wird, um die Ausgabe nach seiner Erstellung zu ändern.

Andere Tipps

Andrews Antwort hat sehr geholfen, danke. Am Ende habe ich Folgendes gemacht:

  1. Das Errormail -HTTP -Modul wurde ein Onbuilding -Ereignis hinzugefügt. Die Veranstaltung für diese Veranstaltung hat eine NameValueCollection -Eigenschaft.
  2. Ich habe das Onbuilding -Event in Global.asax behandelt.
  3. Da httpmodules nicht immer Zugriff auf SessionState hat, insb. Wenn die Ausnahme vor dem Laden der Sitzung erfolgt, habe ich die Daten kopiert, die ich in den HTTPAPPlication -Cache (indiziert von SessionID) kopiert habe.
  4. Wenn eine Ausnahme eintritt, greife ich die Daten, die ich vom Anwendungscache gewünscht habe, über die in der Anforderung gespeicherte Sitzung (insbesondere im Cookie). Ich generiere eine NameValueCollection aus diesen Daten und sende sie über die Onbuilding -Argumente an das HTTPModule zurück.
  5. Die Daten werden dann an E -Mails in ähnlicher Weise wie der Abschnitt Servervariablen gerendert.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top