Je tente de configurer ELMAH pour filtrer les erreurs 404 et je rencontre des difficultés avec les règles de filtrage fournies par XML dans mon fichier Web.config. J'ai suivi le tutoriel here et here et ajouté une déclaration <is-type binding="BaseException" type="System.IO.FileNotFoundException" />
sous ma déclaration <test><or>...
, mais cela a complètement échoué.ELMAH - Filtrage des erreurs 404
Lorsqu'en void ErrorLog_Filtering() {}
du Global.asax je l'ai testé je coincé sur place un point d'arrêt et a constaté que la System.Web.HttpException
qui obtient tiré par ASP.NET pour un 404 ne semble pas avoir un type de base System.IO.FileNotFound
, mais plutôt est simplement un System.Web.HttpException
. J'ai testé cela en appelant e.Exception.GetBaseException().GetType()
dans le gestionnaire d'événements.
Ensuite, j'ai décidé d'essayer un <regex binding="BaseException.Message" pattern="The file '/[^']+' does not exist" />
dans l'espoir que tout message d'exception correspondant au motif "Le fichier '/foo.ext' n'existe pas" serait filtré, mais cela aussi n'a aucun effet. En dernier recours, j'ai essayé <is-type binding="BaseException" type="System.Exception" />
, et même cela est entièrement ignoré.
Je suis enclin à penser qu'il y a une erreur de configuration avec ELMAH, mais je ne vois rien. Suis-je en train de manquer quelque chose d'évident?
Voici les choses pertinentes de mon web.config:
<configuration>
<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>
</configSections>
<elmah>
<errorFilter>
<test>
<or>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<regex binding="BaseException.Message" pattern="The file '/[^']+' does not exist" />
</or>
</test>
</errorFilter>
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/logs/elmah" />
</elmah>
<system.web>
<httpModules>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
</modules>
</system.webServer>
</configuration>
que 2ème lien jette un 404. Oh le ... Ironie – Baldy
@Baldy Malheureusement, c'est un nouveau développement. Vous pouvez vous référer à mon échantillon de configuration pour ce dont vous avez besoin. –
c'est bien Nathan, le sujet était utile. Je viens de trouver amusant que le sujet est à propos de 404, et l'un des liens sur la page mène à un 404 :) – Baldy