Benutzerdefinierte Elmah YSOD-Daten

8

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

Ich habe mehrere Handler in der Global.asax-Datei ausprobiert, finde aber nicht die richtige.

    
Dana Benson 02.03.2010, 17:20
quelle

2 Antworten

4

Dazu würde ich annehmen, dass Sie die Elma Quelle ändern und neu kompilieren müssen. Es sollte nicht zu schwer zu erreichen sein. Wenn Sie in den Konstruktor der Klasse Elmah.Error schauen, wird der HttpContext übergeben, von dem Sie die benötigten Informationen erhalten können, z. Sitzung, Formularvariablen usw. Sie könnten der Elmah.Error -Klasse für diese Daten benutzerdefinierte Felder hinzufügen

Ich denke, die Elmah.ErrorMailHtmlFormatter -Klasse ist der Ort, an dem die E-Mail mit HtmlTextWriter erstellt wird. Hier könnten Sie Code in die RenderSummary() -Methode einfügen, um die benutzerdefinierten Felder einzufügen, die Sie zu Elmah.Error hinzugefügt haben.

Ich weiß, dass es eine Qual sein kann, mit der Quelle zu arbeiten, aber persönlich denke ich, dass es der sauberste Weg ist, da es derzeit keine Möglichkeit für Report- / E-Mail-Vorlagen gibt und es besser ist, etwas zu verschrauben, um die Ausgabe zu ändern wurde generiert.

    
Andrew Corkery 09.03.2010, 16:18
quelle
1

Andrew's Antwort hat sehr geholfen, danke. Ich habe folgendes getan:

  1. Dem ErrorMail http-Modul wurde ein OnBuilding-Ereignis hinzugefügt. Die Ereignisargumente für dieses Ereignis haben eine NameValueCollection-Eigenschaft.
  2. Ich habe das OnBuilding-Ereignis in global.asax behandelt.
  3. Da HttpModules nicht immer Zugriff auf den Sitzungsstatus haben, können Sie z. Wenn die Ausnahme vor dem Laden der Sitzung auftritt, kopierte ich die Daten, die ich gemeldet haben wollte, in den HttpApplication-Cache (indiziert von sessionid).
  4. Wenn eine Ausnahme auftritt, ergreife ich die Daten, die ich will, aus dem Anwendungscache über die in der Anfrage gespeicherte Sitzungskennung (speziell im Cookie). Ich generiere eine NameValueCollection aus diesen Daten und sende sie über die OnBuilding-Argumente an das httpmodul zurück.
  5. Die Daten werden dann ähnlich wie die Servervariablen gerendert, um eine E-Mail zu erhalten.
Dana Benson 28.03.2010 18:44
quelle

Tags und Links