Partager via


Comment : gérer les erreurs au niveau de l'application

Mise à jour : novembre 2007

Cet exemple de code montre comment créer un gestionnaire d'erreurs dans le fichier Global.asax qui interceptera toutes les erreurs ASP.NET non gérées lors du traitement de la demande, c'est-à-dire les erreurs non interceptées par un bloc Try/Catch ou dans un gestionnaire d'erreurs au niveau de la page. Dans l'exemple, le gestionnaire transfère un contrôle à une page d'erreurs générique nommée GenericErrorPage.aspx, qui interprète l'erreur et affiche un message approprié.

Exemple

L'exemple suivant fait partie d'un exemple de code complet dans Exemple complet pour les gestionnaires d'erreurs.

Pour activer le gestionnaire d'événements d'erreur dans le fichier Global.asax, le fichier Web.config ne peut pas spécifier de fichier pour defaultRedirect. Le fichier de configuration est prioritaire. Par conséquent, vous pouvez affecter à customErrors la valeur Off ou supprimer le paramètre defaultRedirect. Si l'élément customErrors de votre fichier de configuration Web.config a la valeur Off, le gestionnaire d'événements Application_Error dans Global.asax traitera toutes les erreurs non gérées.

Note de sécurité :

N'affectez jamais à customErrors la valeur Off dans votre fichier Web.config si vous n'avez pas de gestionnaire Application_Error dans votre fichier Global.asax. Des informations potentiellement compromettantes sur votre site Web peuvent être exposées à n'importe quelle personne susceptible de provoquer une erreur sur votre site.

Programmation fiable

Il est préférable de délimiter par des blocs Try/Catch tout code sujet aux erreurs plutôt que de se fier à un gestionnaire d'erreurs global.

Un gestionnaire d'erreurs défini dans le fichier Global.asax interceptera seulement les erreurs qui se produisent lors du traitement des demandes par le runtime ASP.NET. Par exemple, il interceptera l'erreur si un utilisateur demande un fichier .aspx qui n'existe pas dans votre application. Cependant, il n'intercepte pas d'erreur si l'utilisateur demande un fichier .htm qui n'existe pas. Pour des erreurs non-ASP.NET, vous pouvez créer un gestionnaire personnalisé dans IIS. Le gestionnaire personnalisé ne sera pas non plus appelé pour les erreurs au niveau du serveur.

Vous ne pouvez pas extraire directement des informations relatives aux erreurs sur les demandes provenant du fichier Global.asax ; vous devez transférer le contrôle vers une autre page, en général, une page Web Forms. Lors du transfert du contrôle vers une autre page, utilisez la méthode Transfer. Le contexte en cours sera conservé afin que vous puissiez obtenir les informations relatives aux erreurs à partir de la méthode GetLastError.

Une fois l'erreur gérée, vous devez l'effacer en appelant la méthode ClearError de l'objet Server (classe HttpServerUtility).

Sécurité

Assurez-vous de ne pas afficher les informations relatives aux erreurs susceptibles d'être exploitées par des utilisateurs malveillants pour nuire à votre application. Pour plus d'informations, consultez Comment : afficher des messages d'erreur sécurisés.

Voir aussi

Tâches

Comment : gérer les erreurs au niveau de la page

Concepts

Exemple complet pour les gestionnaires d'erreurs