In generale, come vengono gestiti gli errori nelle pagine ASP .NET?
Un modo è, nel Global.asax, intervenire nell'evento onError e fare un server transfer a pagine apposite per errori, tipicamente errore 500 ed errore 404.
Sempre in questo evento, magari, ci si può far una mail in modo da essere allertati se il sito non funziona.
La cosa migliore, però, è creare un HttpModule che intercetta l'evento error:
C#
public class ErrorModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.Error += new System.EventHandler(context_Error);
}
private void context_Error(object sender, System.EventArgs e)
{
Exception exception = HttpContext.Current.Server.GetLastError();
}
public void Dispose()
{
...
}
}
VB.Net
Public Class ErrorModule
Inherits IHttpModule
Public Sub Init(ByVal context As HttpApplication)
AddHandler context.Error, AddressOf Me.context_Error
End Sub
Private Sub context_Error(ByVal sender As Object, ByVal e As System.EventArgs)
Dim exception As Exception = HttpContext.Current.Server.GetLastError
End Sub
Public Sub Dispose()
...
End Sub
End Class
e quindi registrarlo nel Web.config:
<system.web>
<httpModules>
<add name="ErrorModule" type="ErrorModule" />
</httpModules>
</system.web>
Gli HttpModules sono "il modo migliore" in quanto consentono riusabilità ed è possibile abilitarli o disabilitarli dal Web.config, senza ricompilare. Inoltre usando il Global.asax viene meno la modularità dell'applicazione Web.
Nessun commento:
Posta un commento