我注意到ELMAH记录了一个404,而不是在我的本地服务器上找到的favico。如何通过过滤器抑制此错误?我还不太熟悉它的配置..
发布于 2009-10-16 18:27:08
官方的elmah Error Filtering page解释了许多方法可以抑制这个404 favicon错误。
您可以像这样在web.config中以声明方式过滤掉所有404个错误。但我不确定有没有办法只用404来换取一个图标。
<errorFilter>
<test>
<equal binding="HttpStatusCode" value="404" type="Int32" />
</test>
</errorFilter>
如果你想通过编程来完成,你可以忽略ErrorLog或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声明地过滤所有404,或者像Joel建议的那样只提供一个收藏图标。
发布于 2009-04-17 21:25:35
它不能帮助你学习如何配置ELMAH,但是防止404FOR请求的最简单的方法是提供一个...
发布于 2012-04-23 03:11:04
通过使用下面的代码,我能够让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>
https://stackoverflow.com/questions/762193
复制相似问题