2010-09-28 12 views
11

Sono un po 'confuso su come aggiungere un messaggio a un errore registrato in modo programmatico con ELMAH.Elmah aggiunge messaggio all'errore registrato tramite chiamata a Raise (e)

esempio:

public ActionResult DoSomething(int id) 
{ 
    try { ... } 

    catch (Exception e) 
    { 
     // I want to include the 'id' param value here, and maybe some 
     // other stuff, but how? 
     ErrorSignal.FromCurrentContext().Raise(e); 
    } 
} 

Sembra tutto Elmah può fare è accedere l'eccezione grezzo, come posso anche registrare il mio informazioni di debug?

+1

curioso perché Elmah non ha un sovraccarico per aumentare i messaggi aggiuntivi. le informazioni contestuali sono vitali quando si tenta di correggere determinati errori –

risposta

17

si può gettare una nuova impostazione della originale come l'eccezione interna di eccezione e ELMAH registrerà il messaggio sia:

catch(Exception e) 
{ 
    Exception ex = new Exception("ID = 1", e); 
    ErrorSignal.FromCurrentContext().Raise(ex); 
} 

mostrerà

System.Exception: ID = 1 ---> System.NullReferenceException: Object reference not set to an instance of an object. 
+0

bella idea, grazie – fearofawhackplanet

+0

funziona alla grande! Grazie! –

+0

si dovrebbe usare Exception.Data, ma per impostazione predefinita elmah non ha questa funzionalità. Ho aggiunto una versione personalizzata che utilizzo. Dovrei davvero postare il codice da qualche parte. So che questo è vecchio, ma penso che questo non sia corretto al 100%. Sì, puoi usare questo per piccoli dettagli, ma se vuoi un elenco di dati per cui è stato realizzato l'Exception.Data. Ad esempio quando viene lanciata una SQLException ottieni molti dettagli. Ho anche aggiunto questo. Non è molto difficile da fare da solo. Inoltre, quando si lavora con linq2sql è possibile ottenere molti dettagli. – pqsk

3

ho scoperto che posso anche fare qualcosa Mi piace:

Elmah.ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("class  FbCallback.Page_Load() Request.Url= " + Request.Url)); 

Per registrare i miei messaggi. Poi in quando cerco di

http://localhost:5050/elmah.axd 

Vedo i miei messaggi come tipo NotImplementedException. Non molto carina ma funziona.

Problemi correlati