Próbuję skonfigurować ELMAH do filtrowania błędów 404 i mam problemy z regułami filtrowania dostarczonymi przez XML w moim pliku Web.config. Postępowałem zgodnie z instrukcją here i here i dodałem deklarację <is-type binding="BaseException" type="System.IO.FileNotFoundException" />
pod moją deklaracją <test><or>...
, ale to się całkowicie nie udało.ELMAH - Filtrowanie 404 błędów
Kiedy testowałem go lokalnie Wsadziłem breakpoint w void ErrorLog_Filtering() {}
z Global.asax i stwierdził, że System.Web.HttpException
że zostanie zwolniony przez ASP.NET do 404 nie wydaje się mieć typ bazowy System.IO.FileNotFound
, ale raczej go jest po prostu System.Web.HttpException
. Przetestowałem to, wywołując e.Exception.GetBaseException().GetType()
w procedurze obsługi zdarzeń.
Następnie zdecydowałem się wypróbować <regex binding="BaseException.Message" pattern="The file '/[^']+' does not exist" />
w nadziei, że jakikolwiek komunikat o wyjątku pasujący do wzorca "Plik"/foo.ext "nie istnieje" zostanie odfiltrowany, ale to również nie przyniesie efektu. W ostateczności próbowałem <is-type binding="BaseException" type="System.Exception" />
, a nawet to jest całkowicie lekceważone.
Jestem skłonny pomyśleć, że istnieje błąd konfiguracji z ELMAH, ale nie widzę żadnego. Czy brakuje mi czegoś oczywistego?
Oto istotne rzeczy z mojego 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>
że 2-gie Link rzuca 404. Oh ironia ... – Baldy
@Baldy Niestety, jest to nowy rozwój. Możesz odnieść się do mojej próbki konfiguracji, aby uzyskać to, czego potrzebujesz. –
W porządku Nathan, temat był pomocny. Po prostu uznałem za zabawne, że temat jest około 404, a jedno z linków na stronie prowadzi do 404 :) – Baldy