2010-03-02 21 views
8

sto usando Elmah con ASP.NET e chiedendosi come vorrei aggiungere dati personalizzati, come ad esempio una variabile di sessione, ad una e-mail un'eccezione non gestita.dati personalizzati Elmah YSOD

Ho provato diversi gestori nel file Global.asax, ma non riesco a trovare quella giusta.

risposta

4

Per questo, pensavo che avrebbe bisogno di modificare l'Elmah source e ricompilare. Non dovrebbe essere troppo difficile da raggiungere. Se si dispone di uno sguardo nel costruttore della classe Elmah.Error, il HttpContext viene passato, da cui si dovrebbe essere in grado di ottenere le informazioni necessarie, ad esempio, Session, le variabili Forma ecc Si potrebbe aggiungere campi personalizzati per la classe Elmah.Error per questi dati

Credo che la classe Elmah.ErrorMailHtmlFormatter è dove l'e-mail è costruito utilizzando un HtmlTextWriter, e qui è possibile inserire il codice nel metodo RenderSummary() per includere il campi personalizzati aggiunti a Elmah.Error.

So che potrebbe essere una seccatura iniziare a lavorare con la fonte, ma personalmente penso che sia il modo più pulito in quanto al momento non esiste una funzionalità per i modelli di report/email, ed è meglio che imbastire qualcosa per cambiare l'output dopo di esso è stato generato.

1

risposta di Andrew ha aiutato molto, grazie. Ho finito col fare quanto segue:

  1. Aggiunto un evento OnBuilding al modulo http ErrorMail. L'evento args per questo evento ha una proprietà NameValueCollection.
  2. Ho gestito l'evento OnBuilding in global.asax.
  3. Dal HttpModules non sempre hanno accesso a sessionState, esp. se l'eccezione si verifica prima che la sessione venga caricata, ho copiato i dati che volevo riportati nella cache HttpApplication (indicizzati da sessionid).
  4. Quando si verifica un'eccezione, prelevo i dati che voglio dalla cache dell'applicazione tramite il sessionid memorizzato nella richiesta (in particolare, nel cookie). Genero un NameValueCollection da questi dati e lo rimando al httpmodule tramite gli argomenti di OnBuilding.
  5. I dati vengono quindi sottoposti a e-mail in modo simile a come viene rappresentata la sezione delle variabili del server.
Problemi correlati