Rattraper les erreurs dans Global.asax
J'ai de la suite dans mon Global.aspx qui est conçue pour 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 parfois il n'est pas en Serveur.De transfert. Pour une raison quelconque HttpContext.Actuel.Serveur est null. J'ai compris d'où cela se passe: lorsque des erreurs se produisent dans un contrôle utilisateur et dans mes classes de logique métier. Suis-je manqué quelque chose?
Grâce
source d'informationauteur Peuge
Vous devez vous connecter pour publier un commentaire.
Application_Error bloc catch exception à tout moment entre le cycle de vie des applications.
Cycle de vie des applications est le parent de la Session du cycle de vie comme vous pouvez le comprendre, il ne peut y avoir de nombreuses occasions au sein d'une seule application.
Ainsi, vous pouvez avoir HttpContext.Courant nul à certaines erreurs se sont produites avant la création de la session ou après l'expiration de sessions.
Si vous voulez écrire de la session d'erreur spécifique redirections, vous devriez vérifier la nullité de courant HttpContext toujours.
Vous pouvez également utiliser le Serveur.GetLastError pour connaître les détails de l'erreur s'est produite et l'écriture de votre page d'erreur redirection via CustomError balise 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
Application des Erreurs peuvent se produire à tout moment, y compris lorsqu'aucune connexion n'est présente.
Par exemple, si un thread d'arrière-plan est en cours de traitement et provoque une exception.