asp.net – ELMAH – 过滤404错误
|
我正在尝试配置ELMAH以过滤404错误,并且在我的Web.config文件中遇到XML提供的过滤器规则遇到困难。我遵循教程 here和 here,并添加了< is-type binding =“BaseException”type =“System.IO.FileNotFoundException”/>声明在< test><或> …声明下,但完全失败。 当我在本地测试时,我在Global.asax的void ErrorLog_Filtering(){}中粘贴了一个断点,发现ASP.NET为404触发的System.Web.HttpException似乎没有基本类型System.IO.FileNotFound,而是它只是一个System.Web.HttpException。我通过在事件处理程序中调用e.Exception.GetBaseException()。GetType()来测试这个。 接下来我决定尝试一个< regex binding =“BaseException.Message”pattern =“该文件'/ [^']'不存在”/>希望任何匹配模式“/foo.ext”不存在的异常消息将被过滤,但也没有任何效果。作为最后的手段,我尝试< is-type binding =“BaseException”type =“System.Exception”/>,甚至完全被忽略。 我倾向于认为ELMAH存在配置错误,但我看不到任何内容。我错过了一些明显的事吗? 这是我的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" />
</modules>
</system.webServer>
</configuration>
解决方法这确实是一个配置错误,只是不是特别明显的。注册ELMAH HttpModules的顺序是一个相关的问题,因为为了使ELMAH过滤异常,它必须首先知道哪些模块将消耗异常。必须最后注册ErrorFilter HttpModule,以防止其他模块处理正在过滤的异常。这似乎是倒退了,但至少它是有效的。 <configuration>
...
<system.web>
<httpModules>
<add name="ErrorLog" type="Elmah.ErrorLogModule,Elmah"/>
<add name="ErrorFilter" type="Elmah.ErrorFilterModule,Elmah"/>
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="ErrorLog" type="Elmah.ErrorLogModule,Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule,Elmah"/>
</modules>
</system.webServer>
</configuration>
再次检查了ELMAH Wiki entry on ErrorFiltering之后,我发现了这个小小的信息真的值得一个< strong />标签,如果你问我。 (编辑:自从我第一次回答这个问题以来,他们已经大胆了!道具!)
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 如何使用ASP.NET MVC 3“Razor”查看引擎
- 登录ASP.NET – 最佳实践
- .net – Castle Windsor有没有什么缺点?
- 在ASP.net“正确”中实现OpenID – 会员或验证提供商?
- asp.net-mvc – MVC3区域中的相对内容路径
- asp.net – 禁止从IIS 7继承“允许所有用户”规则
- asp.net-mvc – TryUpdateModel的实例,ASP .NET MVC 3
- asp.net – NancyFx和Windows身份验证
- asp.net – 在.NET .NET中ctl00是常量吗?
- asp.net-mvc – ASP.Net MVC 5 w /身份2.2.0注销不工作
- asp.net-mvc – 带MVC结果的Response.Flush无效
- asp.net web-api – ASP.Net Web API模型绑定不工
- asp.net-mvc – MVC4脚手架添加控制器给出错误“
- asp.net – 在IIS7.5中什么模块删除了400个错误请
- asp.net-mvc – Visual Studio断点未被击中
- asp.net-mvc-4 – 在主机上找不到Clearscript文件
- 防止为ASP.NET服务器控件打包标签
- asp.net – .NET Ionic.Zip模块查杀驱动器空间
- asp.net-mvc-3 – MVC脚手架问题
- asp.net-mvc-4 – 如何让你的MVC控制器DRY为Edit
