Ich versuche ELMAH zu konfigurieren, 404 Fehler zu filtern, und ich stehe in Schwierigkeiten mit den XML-bereitgestellten Filterregeln in meiner Datei Web.config. Ich folgte dem Tutorial here und here und fügte eine <is-type binding="BaseException" type="System.IO.FileNotFoundException" />
Deklaration unter meiner <test><or>...
Deklaration hinzu, die aber komplett fehlschlug.ELMAH - Filterung 404 Fehler
Wenn ich es lokal teste ich einen Haltepunkt in void ErrorLog_Filtering() {}
des Global.asax stecken und festgestellt, dass die System.Web.HttpException
, die für ein 404 von ASP.NET wird ausgelöst, scheint nicht zu einem Basistyp von System.IO.FileNotFound
zu haben, sondern es ist einfach eine System.Web.HttpException
. Ich habe dies getestet, indem ich im Event-Handler e.Exception.GetBaseException().GetType()
aufgerufen habe.
Als nächstes entschied ich mich zu versuchen, eine <regex binding="BaseException.Message" pattern="The file '/[^']+' does not exist" />
in der Hoffnung, dass jede Ausnahmemeldung mit dem Muster "Die Datei '/ foo.ext' existiert nicht" würde gefiltert werden, aber das hat auch keine Wirkung. Als letzten Ausweg habe ich versucht <is-type binding="BaseException" type="System.Exception" />
, und selbst das wird völlig ignoriert.
Ich bin geneigt zu denken, es gibt einen Konfigurationsfehler mit ELMAH, aber ich sehe keine. Fehle ich etwas offensichtlich offensichtlich?
Hier ist die relevanten Sachen aus meinem 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>
, dass der 2. Link wirft einen 404. Oh die Irony ... – Baldy
@Baldy Leider ist eine Neuentwicklung. Sie können auf mein Konfigurationsbeispiel für das, was Sie benötigen, verweisen. –
ist es gut Nathan, das Thema war hilfreich. Ich fand es einfach witzig, dass das Thema über 404s ist, und einer der Links auf der Seite führt zu einem 404 :) – Baldy