Domanda

Sto usando Elmah con ASP.NET e mi chiedo come aggiungerei dati personalizzati, come una variabile di sessione, a un'e -mail di eccezione non gestita.

Ho provato diversi gestori nel file global.asax ma non riesco a trovare quello giusto.

È stato utile?

Soluzione

Per questo, penso che dovresti modificare Elmah fonte e ricompilare. Non dovrebbe essere troppo difficile da raggiungere. Se dai un'occhiata nel costruttore del Elmah.Error classe, il HttpContext viene passato, da cui dovresti essere in grado di ottenere le informazioni di cui hai bisogno, ad esempio sessione, variabili di modulo ecc. Potresti aggiungere campi personalizzati al Elmah.Error Classe per questi dati

Penso che la Elmah.ErrorMailHtmlFormatter La classe è dove l'e -mail è costruita utilizzando un HtmlTextWriter, e qui potresti inserire il codice in RenderSummary() metodo per includere i campi personalizzati a cui hai aggiunto Elmah.Error.

So che potrebbe essere un dolore iniziare a lavorare con la fonte, ma personalmente penso che sia il modo più pulito in quanto attualmente non esiste una struttura per i modelli di report/e -mail, ed è meglio che imbullonare qualcosa per cambiare l'output dopo essere stato generato.

Altri suggerimenti

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

  1. Aggiunto un evento on -building al modulo HTTP Errormail. L'evento Arg per questo evento ha una proprietà NameValueCollection.
  2. Ho gestito l'evento di Onbuilding in Global.asax.
  3. Poiché HttpModules non ha sempre accesso a SessionState, esp. Se si verifica l'eccezione prima della carica di sessione, ho copiato i dati che volevo riportati nella cache HTTPAPPLICATION (indicizzata da SessionID).
  4. Quando si verifica un'eccezione, prendo i dati che desidero uscire dalla cache dell'applicazione tramite la sessione memorizzata nella richiesta (in particolare nel cookie). Genera un nomevalueCollection da questi dati e lo invia a HTTPModule tramite gli args di Onbuilding.
  5. I dati vengono quindi resi all'e -mail in modo simile a come viene resa la sezione variabili del server.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top