我注意到ELMAH在我的本地服务器上记录了404找不到favico的盒子。如何通过过滤器来抑制此错误?我不太熟悉配置它呢..ELMAh中的块404 FavIco错误
回答
官方elmah Error Filtering page解释了这种404 favicon错误可以被抑制的多种方式。
你可能会过滤掉全部 404错误声明在web.config中是这样的。我不确定是否有办法仅仅为了图标而压制404。
<errorFilter>
<test>
<equal binding="HttpStatusCode" value="404" type="Int32" />
</test>
</errorFilter>
如果你想以编程方式做到这一点,你可以在官方文档解释解雇在错误日志或ErrorEmail过滤事件的错误。下面的代码有点矫枉过正,但它演示了如何为/favicon.ico请求过滤掉只有 404错误。
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (((HttpException)e.Exception.GetBaseException()).GetHttpCode() == 404
&& ((HttpContext)e.Context).Request.Path == "/favicon.ico")
{
e.Dismiss();
}
}
我个人更喜欢通过web.config声明过滤所有的404s,或者只是提供像Joel建议的favicon。
它不帮助你了解如何配置ELMAH,但最简单的方法来防止404请求的favicon是提供一个...
我只是忽略了路线而不是配置Elmah。这适用于我:
routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"});
你确定你真的用ELMAH检查过吗?忽略路线不起作用。它只是导致请求被MVC忽略,并传递给404的常规ASP.NET管道,导致它被记录在ELMAH中。 – 2010-09-17 12:06:26
我正在使用上面的Kurt Schindler的编程解决方案(vs config);然而,我注意到非HttpExceptions在ErrorLog_Filtering事件处理程序中被抛出两次。为避免这种情况,请确保您对GetBaseException方法进行类型检查。这里的片段
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (e.Exception.GetBaseException() is HttpException)
{
if (((HttpException)e.Exception.GetBaseException()).GetHttpCode() == 404
&& ((HttpContext)e.Context).Request.Path == "/favicon.ico")
{
e.Dismiss();
}
}
}
这里没有新东西,只是一个FYI,如果你碰巧看到一些奇怪的行为。
谢谢...
这不是我的Web应用程序请求图标,那就是,当我浏览到elmah.axd页面,浏览器请求一个图标。
据推测,这应该工作:
<elmah>
<errorFilter>
<test>
<and>
<equal binding="HttpStatusCode"
value="404" type="Int32" />
<regex binding="Context.Request.ServerVariables['URL']"
pattern="/favicon\.ico(\z|\?)" />
</and>
</test>
</errorFilter>
</elmah>
但你猜怎么着,它没有。
我发现工作的唯一方法是添加一个favicon.ico到我的web根目录。这不是我的网站,它只适用于elmah.axd页面。不需要调用route.IgnoreRoute。
这里的elmah.axd与我的图标,并没有错误:
我能得到ELMAH通过使用下面的代码忽略错误。您也可以添加您想要忽略的其他路径。从技术上讲,这些可能是单独的测试,但是为了避免将来与应用程序相关的其他404错误,我想我会将这些分组在一起,因为它们不依赖于我的应用程序,并且仅在这里从我的错误日志中删除混乱。
<errorFilter>
<test>
<or>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<equal binding="Context.Request.Path" value="/favicon.ico" type="string" />
</and>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<equal binding="Context.Request.Path" value="/robots.txt" type="string" />
</and>
</or>
</test>
</errorFilter>
当然,如果你担心这种混乱你的web.config你总是可以将过滤器分成专用文件。
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" />
<errorFilter configSource="elmahFilters.config" />
</elmah>
- 1. ELMAH - 过滤404错误
- 2. Elmah报告不需要的404错误
- 3. Elmah和Sitecore以及404错误处理
- 4. 在Machine.config中配置ELMAH - elmah.axd上的404
- 5. ELMAH在IIS 7.5上产生HTTP 404错误
- 6. 如何获得404与Elmah以及为asp.net mvc中的Elmah编写的HandleErrorAttribute?
- 7. ELMAH不记录,除了404的
- 8. ELMAH错误和经典Asp
- 9. Elmah没有保存错误
- 10. Elmah错误处理WebAPI 2
- 11. IIS 2.0重写模块 - 404错误
- 12. 错误404错误
- 13. 错误404:Solr中
- 14. JRuby/tomcat错误404中的错误GET
- 15. 使用ELMAH在EventLog中记录错误
- 16. Flask中的404错误
- 17. C#中的404错误#
- 18. j_security_check中的http 404错误
- 19. elmah在执行catch块后不会抛出错误页面
- 20. ELMAH:错误记录模块和处理程序
- 21. 安全elmah目录获取404?
- 22. Sonata Favico不会改变
- 23. MySQL的404错误
- 24. WordPress的404错误
- 25. 404错误WordPress的
- 26. 由ELMAH记录两次的Ajax错误
- 27. 减少ELMAH记录的错误细节
- 28. 使用Gmail的ElMAH错误记录?
- 29. Elmah发送太多的错误邮件
- 30. ELMAH记录的错误没有意义
这会做这项工作,但我不会推荐过滤*所有* 404错误。这有点限制了ELMAH的力量。我更倾向于乔尔的方法,在那里你真正解决了问题。 – senfo 2009-11-11 15:55:39
!我只是去..哦,是的,我只是实际上添加一个favicon! – gideon 2010-12-21 14:29:41