Eccezioni di cattura all'interno delle pagine .aspx e .ascx
-
02-07-2019 - |
Domanda
Le domande dicono tutto, prendi questo codice di esempio:
<ul id="css-id">
<li>
<something:CustomControl ID="SomeThingElse" runat="server" />
<something:OtherCustomControl runat="server" />
</li>
</ul>
Ora, se un errore viene generato da qualche parte all'interno di questi controller (che si trovano in una pagina master), elimineranno l'intero sito, come si potrebbero rilevare queste eccezioni?
Soluzione
Puoi prendere tutte le eccezioni non gestite altrove nella pagina / classe Global.asax. Guarda:
protected void Application_Error(Object sender, EventArgs e)
metodo.
Altri suggerimenti
Purtroppo un'eccezione non gestita farà sempre errore nel tuo sito. Tuttavia, puoi impedirlo in alcuni modi.
- Utilizza la sezione nel tuo web.config per mostrare un messaggio intuitivo
- In Global.asax - o in un gestore personalizzato - rileva l'eccezione non gestita e reagisci di conseguenza - come questo
migliore soluzione
- Assicurati che i controlli non generino eccezioni non gestite!
Aggiungi un global.asax e implementa il gestore Application_Error. Utilizzare la funzione Server.GetLastError () per ottenere un handle sull'eccezione generata.
Utilizzo del metodo Global.asax Application_Error, come descritto in Come creare pagine di segnalazione errori personalizzate in ASP. NET utilizzando Visual C #. NET .
Un approccio alternativo sarebbe quello di utilizzare un modulo HTTP ; questo ti dà un po 'più di flessibilità (puoi gestire errori da più applicazioni, ad esempio).
Vuoi catturare l'eccezione e gestirla?
O vuoi impedire lo schermo giallo della morte? Se stai cercando di prevenire la schermata gialla della morte, guarda come gestire l'evento Error
su HttpApplication
(in altre parole, nel tuo Global.asax).
Vedi la seguente pagina MSDN per maggiori dettagli: http://msdn.microsoft.com/en- us / library / system.web.httpapplication.error.aspx
In particolare questo paragrafo:
L'eccezione che genera l'evento Error è accessibile mediante una chiamata al metodo GetLastError. Se l'applicazione genera un output di errore personalizzato, elimina il messaggio di errore predefinito generato da ASP.NET da una chiamata al metodo ClearError.