Partager via


Gestion de rapport d'erreurs adaptable dans les pages Web mobiles ASP.NET

Lors du traitement d'une page ASP.NET, les erreurs sont levées sous forme d'exceptions et sont prises en charge par le mécanisme de gestion des erreurs ASP.NET.

Cette section fournit une vue d'ensemble du rapport d'erreurs dans ASP.NET, et décrit sa relation avec les applications ASP.NET qui contiennent des pages Web mobiles.

Vue d'ensemble du rapport d'erreurs de ASP.NET

Plusieurs types d'erreurs peuvent se produire au cours d'une demande, par exemple :

  • Erreurs intrinsèques dans le protocole HTTP, par exemple la demande d'un fichier manquant.

  • Erreurs d'analyse d'une page, d'un contrôle utilisateur ou d'un fichier similaire lors de sa compilation dans un assembly.

  • Erreurs d'exécution d'une page Web dans ASP.NET, durant la durée de vie de la page.

  • Erreurs de lecture d'un fichier de configuration.

  • Erreurs système, par exemple une condition de mémoire insuffisante.

ASP.NET offre plusieurs fonctionnalités permettant de personnaliser le rapport d'erreurs.

Mode de rapport d'erreurs

Vous pouvez configurer une application de manière à afficher les erreurs détaillées et les informations pertinentes pour le développeur, les erreurs de base pour les utilisateurs ordinaires, ou les erreurs personnalisées. Vous pouvez régler les paramètres pour afficher les erreurs détaillées uniquement lorsque le client est l'ordinateur local.

Erreurs au niveau de l'application

Lorsqu'une erreur se produit durant une demande, ASP.NET déclenche l'événement Application_Error. Une méthode du fichier Global.asax peut gérer cet événement et substituer le comportement de gestion des erreurs.

Erreurs au niveau de la page

Les erreurs qui se produisent au cours de la durée de vie d'une page déclenchent l'événement Page_Error. Le gestionnaire de cet événement peut effectuer des tâches de notification ou entreprendre une action corrective, par exemple la suppression de l'erreur, selon la nature de l'erreur.

Erreurs personnalisées

Dans le fichier Web.config, vous pouvez spécifier un ensemble de pages personnalisées pour les exceptions qui se produisent dans l'application ASP.NET. Lorsqu'une erreur se produit, ASP.NET vérifie si l'application est configurée pour afficher les erreurs personnalisées et si une page d'erreur appropriée existe. Dans l'un ou l'autre de ces deux cas, ASP.NET effectue une redirection vers la page d'erreur, en passant un paramètre qui contient l'URL d'origine.

Vue d'ensemble de la gestion de rapport d'erreurs adaptable dans les applications Web mobiles

Le rapport d'erreurs des pages Web mobiles fonctionne de la même façon que pour les autres applications ASP.NET. Les mêmes techniques de personnalisation sont disponibles. Cependant, certaines différences de comportement rendent le rapport d'erreurs des pages Web mobiles plus adaptable au fonctionnement avec les périphériques.

Mise en forme spécifique au périphérique

Les messages d'erreur sont automatiquement mis en forme d'après le langage de balisage du périphérique cible. Pour les périphériques WML, il s'agit d'un paquet de cartes. Pour les périphériques HTML, il s'agit d'une page HTML.

Notes

Il est recommandé d'écrire des pages d'erreurs personnalisées sous forme de pages Web mobiles ASP.NET. Ainsi, vos pages d'erreurs personnalisées sont correctement mises en forme pour chaque type de périphérique.

Contenu limité du message d'erreur par défaut

Pour tous les périphériques mobiles, les messages d'erreur intégrés sont succincts, même lorsque l'application est configurée pour afficher un message détaillé. Un message d'erreur contient généralement le type de l'exception levée et la méthode ayant provoqué cette exception. Toutefois, lorsque le client est dans un navigateur de bureau, le message d'erreur standard est rendu.

Code de réponse HTTP

Lorsque ASP.NET indique qu'une exception s'est produite, il définit le code de réponse HTTP de manière appropriée. Les navigateurs peuvent agir en fonction du code de réponse ou afficher les détails des erreurs figurant dans le corps de la réponse. Cependant, certains périphériques mobiles, en particulier les téléphones WML, n'affichent le code de réponse qu'en cas d'erreur. Lorsqu'une erreur se produit sur ce type de périphérique, la demande retourne le code de réponse HTTP valide 200. Le corps de la page contient toutefois le message d'erreur. Sur les périphériques HTML, la demande retourne le code d'erreur réel afin que le navigateur puisse répondre en conséquence.

Processus lié au rapport d'erreurs adaptable

Pour les pages Web mobiles, ASP.NET recherche et rapporte des erreurs à l'aide du processus suivant :

  1. Si une erreur au niveau de l'application se produit, un module HTTP de type ErrorHandlerModule gère l'erreur. (Ce module est installé automatiquement.)

  2. Si une exception se produit au niveau de la page durant son cycle de vie, ASP.NET appelle la méthode OnError de la page. Dans la mesure où il s'agit d'une page mobile, une implémentation de substitution est appelée dans MobilePage, qui appelle à son tour la méthode HandleError de l'adaptateur de page assigné. La méthode de l'adaptateur peut signaler l'erreur de manière détaillée et retourner une valeur indiquant que l'erreur a été gérée. Dans le cas contraire, l'exception continue d'être traitée. ASP.NET utilise automatiquement des pages d'erreurs personnalisées.

  3. ASP.NET appelle le gestionnaire d'erreur de l'étape 1. Si le périphérique cible est un navigateur HTML capable d'afficher l'intégralité du message d'erreur ASP.NET généré, la méthode prend fin.

  4. Dans le cas contraire, ASP.NET rassemble des informations sur l'exception, crée une instance d'une page mobile définie en interne de type ErrorFormatterPage, lie les données aux données collectées et restitue les résultats. Cette page est chargée de produire un message d'erreur spécifique au périphérique. Dans la mesure où l'exception est gérée, la méthode de l'événement ne retourne pas de code d'état d'erreur HTTP.

Voir aussi

Autres ressources

Guide du développeur d'applications
Développement de pages Web mobiles de l'ASP.NET