2010-01-15 68 views
18

我正在使用Elmah登录ASP.NET MVC项目,并且我正在接收大量404错误的路径/prx2.php,而该路径又将哈希作为查询字符串参数传递。Elmah报告不需要的404错误

我认为这是一个试图找到漏洞的扫描器。因为我没有运行PHP,所以我很安全!不过,我想停止ELmah报告此错误。

什么是最好的方式来排除这些类型的错误报告没有实际创建一个/prx2.php页面。我也想在配置文件中做这件事,而不是按照步骤进行。

任何想法?

回答

18

ELMAH支持错误过滤 - Error Filtering link

这应该解决这一问题为您服务。您可以通过代码定义过滤器 - 在Global.asx文件或XML配置为ELMAH本身

+0

如果我想在配置文件中执行此操作,麻烦就是它的全部或全无''equal binding =“HttpStatusCode”value =“404”type =“Int32”/>'filters ALL 404 – Rippo 2010-01-15 13:19:06

+0

您可以在配置文件中更具体 - 请参阅该链接的使用JScript部分。这将告诉你如何更具体和使用JavaScript语法来定义复杂的条件,例如在URL上使用RegEx来匹配特定路径 – saret 2010-01-15 13:28:24

+1

+1谢谢你看,虽然这看起来有点讨厌! – Rippo 2010-01-15 13:33:15

3

第一步:配置配置部分包括ELMAH errorFilter部分:

<configSections> 
    <sectionGroup name="elmah"> 
    <!-- ... --> 
    <!-- this is the important part --> 
    <section name="errorFilter" requirePermission="false" 
     type="Elmah.ErrorFilterSectionHandler, Elmah"/> 
    </sectionGroup> 
</configSections> 

第二步:配置请在<elmah>部分进行过滤。

<elmah> 
    <!-- ... --> 
    <errorFilter> 
    <test> 
     <and> 
     <equal binding="HttpStatusCode" value="404" type="Int32" /> 
     <!-- you may want to consider something more generic like pattern="/.+[.]php" --> 
     <regex binding="Context.Request.Url" pattern="/prx2.php" /> 
     </and> 
    </test> 
    </errorFilter> 
</elmah>  

第三步:包括内部应用程序模块Elmah.ErrorFilterModule

现代(IIS7 +)版本,包括HTTP模块:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
    <!-- ... --> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" 
     preCondition="managedHandler" /> 
    </modules> 
</system.webServer> 

传统(较老的IIS),包括HTTP模块的版本:

<system.web> 
    <httpModules> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
    </httpModules> 
</system.web> 
+0

这段时间没有用过,但是这不会过滤掉'ALL' 404's?我只想要某些文件类型,请参阅上面有关接受的答案的评论。这个答案没有帮助tbh,对不起 – Rippo 2017-01-19 14:40:26

+0

@Rippo - 我的坏 - 它只是这个页面首先提出如何从elmah日志中删除404,并且接受的答案中的链接已死亡。所以我总结了我从谷歌学到的东西:)无论如何,我已经更新我的答案,以匹配“过滤器只是特定的路径”。 – 2017-01-19 15:04:26