2009-07-15 25 views
6

Esiste un modo semplice per registrare tutte le eccezioni in un'applicazione ASP.NET? Sto già registrando le eccezioni non gestite tramite l'evento Application_OnError, ma desidero eseguire la registrazione anche quando un'eccezione viene gestita a livello di pagina.Gestione eccezioni ASP.NET

Molte grazie.

+0

Vuoi dire gestito catturandolo, o usando Page_Error, o qualcos'altro? Si prega di essere più specifici. – RichardOD

+0

Gestito catturandolo. – staterium

risposta

5

Supponendo che si stia lanciando e catturando solo i propri tipi di eccezione (derivati ​​da System.Exception ofc), è possibile creare il log di eccezioni di base di cui si ha bisogno nel proprio costruttore.

+0

questa è una buona idea –

+2

Questo è improbabile, dal momento che molte eccezioni saranno generate da componenti .Net standard - il ripensamento di questi come proprio sarebbe molto dispendioso – cjk

+0

Hmmm, angolo interessante.Dovrei fornire il mio tipo di eccezione di base e quindi modificare ogni dichiarazione di cattura su di esso in ogni caso, ma almeno tutte le funzionalità di registrazione sono in un unico punto. – staterium

1

Chiamare il componente di registrazione nei blocchi catch per le eccezioni gestite.

+0

Beh, sì. Ma mi chiedo se non c'è un modo più semplice per farlo? Senza modificare individualmente ciascuna dichiarazione di cattura? – staterium

+0

Perché hai delle istruzioni catch se non gestisci l'errore? Se gestisci l'errore, non c'è bisogno di intasare il tuo registro con esso ?! –

+2

Gestisco gli errori per il gusto dell'utente, ma ho bisogno di più informazioni per scopi di debug rispetto a ciò che viene visualizzato all'utente. – staterium

0

Non penso che ci sia comunque delle eccezioni gestite automaticamente per la registrazione. Se stai già eseguendo la registrazione Application_OnError per le eccezioni non gestite temo che Colin sia corretto e dovrai chiamare il componente di registrazione nei blocchi catch per le eccezioni gestite per le quali desideri eseguire la registrazione.

9

È possibile utilizzare Elmah per registrare le eccezioni. È davvero facile da usare e fornisce buone informazioni sul problema.

+0

"si ottengono i seguenti servizi senza modificare una singola riga del codice: * Registrazione di quasi tutte le eccezioni non gestite." – staterium

+1

+20 Per raccomandare Elmah. È diventato uno standard per lo sviluppo di IMHO. Se richiamo SO lo usa anche. – BinaryMisfit

1

ASP.NET Salute Monitoring fa in modo elegante e abbastanza automatica (non c'è bisogno di prendere manualmente eccezioni):

Quando si fa clic sul primo link , c'è un esempio di come abilitare e configurare il monitoraggio dello stato di ASP.NET. È necessario configurarlo nel file web.config.

Per la registrazione di un DB, è possibile creare la tabella corresponsing utilizzando lo strumento di ASP.NET per la registrazione di SQL Server: ASP.NET SQL Server Registration Tool (Aspnet_regsql.exe)

mi piace molto. Per la registrazione manuale, patterns & practices Enterprise Library's Logging Application Block potrebbe essere qualcosa per te, ma questo è leggermente fuori tema.

Matthias

3

Sono d'accordo con Collin, che si dovrebbe accedere ovunque si cattura (e non rigenerare).

Ma se è necessario che ogni eccezione venga registrata senza molte modifiche al codice, gestisci lo AppDomain.FirstChanceException Event e otterrai TUTTE le eccezioni (forse è anche troppo: p, ma potrebbe aiutarti a pulire il codice).