Correction des erreurs dans Global.asax

J’ai le suivant dans mon Global.aspx qui est destiné à la gestion des erreurs:

void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); if (exception != null) { //Log if (HttpContext.Current.Server != null) { HttpContext.Current.Server.Transfer("/siteerror.aspx"); } } } 

Cela fonctionne pour la plupart, mais n’entre parfois pas dans Server.Transfer. Pour une raison quelconque, HttpContext.Current.Server est null. J’ai compris où cela se produit: lorsque des erreurs se produisent dans un contrôle utilisateur et dans mes classes de logique métier. Est-ce que j’ai râté quelque chose?

Merci

Le bloc Application_Error peut intercepter une exception à tout moment entre le cycle de vie de l’application.

Le cycle de vie d’une application est le parent du cycle de vie d’une session, comme vous pouvez le comprendre, il peut y avoir plusieurs sessions au sein d’une même application.

Ainsi, vous pouvez avoir HttpContext.Current null si certaines erreurs se sont produites avant la création de la session ou après l’expiration des sessions.

Si vous souhaitez écrire des redirections d’erreur spécifiques à une session, vous devez toujours rechercher la valeur Null du contenu HttpContext actuel.

Vous pouvez également utiliser Server.GetLastError pour connaître les détails de l’erreur et écrire votre redirection de page d’erreur via la balise CustomError dans web.config.

Voir le lien suivant

http://weblogs.asp.net/scottgu/archive/2006/08/12/Tip_2F00_Trick_3A00_-Show-Detailed-Error-Messages-to-Developers.aspx

Des erreurs d’application peuvent survenir à tout moment, y compris lorsqu’aucune connexion n’est présente.

Par exemple, si un thread en arrière-plan est en cours de traitement et provoque une exception.