Section courante

A propos

Section administrative du site

Utilisation d'ELMAH avec ASP.NET MVC

Configurer ELMAH sur MVC est très simple, car la majeure partie du travail s'effectue dans le fichier web.config, plus ou moins partagé entre MVC et Webforms. Il existe déjà d'excellents articles (et plus détaillés) expliquant comment configurer et optimiser ELMAH. Ce page propose un tutoriel rapide et simple sur les étapes les plus importantes pour installer ELMAH sur MVC.

Pour les utilisateurs avancés souhaitant des informations spécifiques à MVC, passez directement à l'étape 4.

Étape 1 : Référencement des assembly

Tout d'abord, récupérez la dernière version binaire d'ELMAH depuis la page du projet et extrayez le dossier bin.

ELMAH ne nécessite aucune installation de GAC. Vous pouvez donc déposer le contenu du dossier bin à l'emplacement de votre choix (bien que je recommande généralement d'utiliser un dossier lib pour entreposer les dépendances externes) et référencer Elmah.dll depuis votre application.

Étape 2 : Modifiez votre fichier web.config pour appeler ELMAH

Ajoutez d'abord le code suivant à vos <configSections> pour qu'ELMAH lise sa configuration depuis le fichier web.config :

<sectionGroup name="elmah">
  <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
  <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
  <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
  <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>

Ensuite, allez dans votre section <httpHandlers> et ajoutez le gestionnaire de fichiers ELMAH :

<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

Cela redirigera toutes les requêtes vers un fichier nommé elmah.axd, vers la page de présentation des erreurs ELMAH. Ainsi, pour consulter la liste des erreurs, accédez à http://server/elmah.axd. Le nom importe peu; vous pouvez le renommer, mais sachez que l'extension doit être cartographiée au pipeline ASP.NET dans IIS (un nom .html serait donc inefficace s'il n'était pas configuré correctement).

Enfin, ajoutez le module de journalisation ELMAH à votre section <httpModules> :

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>

Étape 3 : Configurer ELMAH

Il est suggéré de lire les articles du wiki pour savoir comment configurer correctement ELMAH. Pour une mise en service rapide, nous allons simplement consigner toutes les erreurs dans des fichiers XML en ajoutant ce code au fichier web.config :

<elmah>
  <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" />
</elmah>

Cela demande à ELMAH de créer des fichiers XML dans votre répertoire App_Data (assurez-vous donc que le processus ASP.NET dispose de droits d'accès suffisants à ce dossier) et de générer une sortie comme celle-ci :

Étape 4 : Configurer le routage

Jusqu'à présent, nous utilisions la routine de configuration habituelle pour les applications ASP.NET classiques. Il ne reste qu'un léger ajustement à effectuer pour la rendre compatible avec MVC.

Vous devez autoriser les requêtes adressées au front-end ELMAH (elmah.axd dans cet exemple) à passer par la logique de routage MVC sans modification afin qu'elles soient traitées par ASP.NET classique derrière MVC. Cela est aussi simple que d'ajouter une route ignorée à votre table de routage dans Global.asax.cs :

  1. public static void RegisterRoutes(RouteCollection routes)
  2. {
  3.     // ...
  4.     routes.IgnoreRoute("elmah.axd");
  5.     // ...
  6. }

Une fois toutes les étapes ci-dessus effectuées, toutes les exceptions non gérées générant un écran jaune fatal seront également enregistrées dans les fichiers XML de votre App_Data. Vous pourrez ensuite les consulter à distance en accédant à http://server/elmah.axd. Vous obtiendrez une page d'aperçu plutôt agréable, comme celle-ci :

Journal des erreurs

Félicitations ! Vous avez configuré ELMAH sur ASP.NET MVC pour consigner toutes les erreurs dans des fichiers XML. Il est vivement recommandé de lire maintenant comment Sécurisé les pages du journal des erreurs afin d'empêcher les utilisateurs non autorisés de consulter vos journaux.

De plus, comme les erreurs 404 dans ASP.NET MVC sont générées comme des exceptions, ELMAH les consigne également. Vous pouvez donc lire comment les filtrer.



Dernière mise à jour : Mercredi, le 23 novembre 2022