GESTIONE DEGLI ERRORI NELLE PAGINE E NELLE APPLICAZIONI ASP.NET


ASP.NET fornisce un modo semplice ma potente per trattare gli errori che si verificano nelle applicazioni web.
A livello di pagina, è possibile utilizzare il metodo OnError . Questo perchè la classe Page deriva da System.Web.UI.Page e l'oggetto Page consente di intercettare gli errori a livello di pagina.

Private Sub Page_Error(ByVal sender As Object, ByVal e As EventArgs)
    ' Recupera l'ultimo errore
    Dim exc As Exception = Server.GetLastError
' Gestione delle eccezioni If TypeOf exc Is InvalidOperationException Then ' Trasferisce il controllo alla pagina di errore PaginaErroreIOE.aspx Server.Transfer("PaginaErroreIOE.aspx", True) ElseIf TypeOf exc Is ArgumentOutOfRangeException Then ' Do all'utente qualche informazione sull'errore stando sulla stessa pagina Response.Write(exc.Message.ToString) 'Pulisco l'errore Server.ClearError() Else ' Altra condizione di errore ... End If End Sub
Questo funziona per una sola pagina.
Per renderlo operativo a livello di applicazione bisogna agire sui files Web.config e Global.asax .
<configuration>
  <appSettings/>
  <connectionStrings/>
  <system.web>
    <compilation debug="true" />
    <customErrors mode="On" defaultRedirect="PaginaDiDefaultErrore.aspx">
      <error statusCode="404" redirect="404.aspx"/>
    </customErrors>
  </system.web>
</configuration>  
Nella sezione customErrors del Web.config viene specificato come gestire gli errori che si verificano nell'applicazione.
Nell'esempio, gli errori non gestiti HTTP 404 (file non trovato) vengano indirizzati al file 404.aspx. Questi errori HTTP 404 si verificano se viene effettuata la richiesta di un file aspx, asmx e così via e il file richiesto non esiste.
Tutti gli altri errori non gestiti nei file ASP.NET vengono indirizzati al file PaginaDiDefaultErrore.aspx.
Sempre nell'esempio, l'attributo mode di customErrors è impostato su "On". Le possibili configurazioni sono:
  • On : i dettagli di errore non sono visualizzati a nessuno, anche gli utenti locali. Se è stata specificata una pagina di errore, questa verrà sempre utilizzata (nell'esempio PaginaDiDefaultErrore.aspx).
  • Off : tutti possono vedere i dettagli dell'errore, sia locali che utenti remoti. Attenzione!! Non impostare mai l'attributo su "Off" se non è stato creato un gestore di Application_Error nel file Global.asax in quanto, per chiunque, è possibile venire a conoscenza di informazioni potenzialmente compromettenti sul sito stesso.
  • RemoteOnly : se una richiesta viene effettuata in localhost, ASP.NET esegue il rendering della pagina con le informazioni dettagliate sull'errore (traccia dello stack e i dettagli di compilazione); agli utenti remoti, invece, verrà presentata una pagina concisa con una notifica che si è verificato un errore.

All'interno del file Global.asax andremo a scrivere codice nell' evento Application_Error

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
    ' Trasferisce il controllo alla pagina di errore PaginaErroreIOE.aspx
    Server.Transfer("PaginaErroreIOE.aspx", True)
End Sub                

Autore: Fabrizio De Odorico

TAGS: Application_Error, ASP.NET, CustomErrors, Errori, Gestione, Global.asax, Page, Web.config

Postato il 27/01/2013 | Invia ad un amico  |   Versione stampabile  |   Aggiungi ai preferiti  |   Visite: 2154  |   Contattami su whatsapp

Modulo Login

 

 

 

 

 

Vuoi offrirmi un caffè?

Se trovi utili i miei articoli o vuoi aiutarmi ad aggiungere altro materiale sul sito...

fai una Donazione

Terminologia

La piattaforma .Net è una suite di prodotti creata dalla Microsoft dove i vari linguaggi di programmazione sono orientati agli oggetti (da C# a Visual Basic a J#).
Il bytecode di .NET viene compilato al momento dell'esecuzione (just in time compilation) ed è compatibile con le sole piattaforme Windows.

Java è un linguaggio di programmazione orientato agli oggetti creato dalla Sun Microsystems.
Il bytecode, generato dalla compilazione, viene interpretato dalla Java Virtual Machine in fase di esecuzione. Per questo motivo le applicazioni java sono indipendenti dall'hardware sulle quali vengono eseguite.