Analyste Développeur en .Net
Comment gérer les exceptions en Asp.net
Situation
Quand on met son site en ligne, on a parfois des erreurs qu’on n’a pas su gérer, ce qu’on appelle une exception, par exemple la base de données qui ne répond pas.
Pour comprendre comment elles ont eu lieu, il faut pouvoir logguer ces exceptions.
Pour corriger le problème rapidement, le site enverra un email à l’administrateur.
Elmah
Elmah permet de répondre à tous ces besoins.
Voici la procédure a faire pour intégrer Elmah à votre projet :
1e étape: Télécharger Elmah
Pour cela cliquer ici, la version que j’utilise présentement est la version 1.1.
2e étape: Ajouter la référence à votre projet
Menu Project / Add Reference, puis ajouter Elmah.dll
3e étape: Modifier la web.config
Ajouter dans la section ConfigSections:
<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> |
Ajouter dans la section HttpHandlers:
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> |
Ajouter dans la section HttpModules:
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> |
Configurer le serveur SMTP, si ce n’est pas déjà fait:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="DoNotReply@XXX.com">
<network host="smtp.XXX.com" defaultCredentials="true" userName="X" password="X" />
</smtp>
</mailSettings>
</system.net> |
Ajouter la section elmah dans la section Configuration:
<elmah>
<security allowRemoteAccess="0" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="C:\Temp" />
<errorMail from="error@XXXX.com" to="administrator@XXXX.com" priority="High" />
</elmah> |
Ajouter la section location dans la section Configuration:
<location path="elmah.axd">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location> |
4e étape: Tester
Ajouter le code suivant dans le Page_Load de la page:
Throw New Exception("This is a test") |
Compiler et ré-afficher la page.
Une exception est détectée, un mail est envoyé et une entrée dans le fichier xml a été ajoutée.
Allons plus loin
Filtrer les erreurs
Elmah permet de filtrer les erreurs interceptées.
Ainsi on ne voudra pas logguer les erreurs 404 ou encore les exceptions de Type FieldAccessException par exemple. Pour cela, il faut modifier la section elmah dans la web.config de la manière suivante:
<pre lang="config">
<elmah>
<security allowRemoteAccess="0" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="C:\Temp" />
<errorFilter>
<test>
<or>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<is-type binding="BaseException" type="System.FieldAccessException" />
</or>
</test>
</errorFilter>
<errorMail from="error@XXXX.com" to="administrator@XXXX.com" priority="High" />
</elmah> |
Visionner les erreurs
Elmah offre une interface web pour visionner les exceptions, pour cela ouvre la page http://localhost/elmah.axd, voici un exemple du rendu:
Related posts:
| Imprimer l'article | Cette entrée a été posté par ranouf le 27 mai 2010 à 12 h 31 min, et placée dans Non classé. Vous pouvez suivre les réponses à cette entrée via RSS 2.0. Vous pouvez laisser une réponse, ou bien un trackback depuis votre site. |



