Elmah报告了不需要的404错误

时间:2010-01-15 12:28:02

标签: logging http-status-code-404 elmah

我正在使用Elmah登录ASP.NET MVC项目,并且我收到了路径/prx2.php的大量404错误,而这些路径又将散列作为查询字符串参数传递。

我认为这是一个试图查找漏洞的扫描程序。因为我没有运行PHP,所以我很安全!但是,我想阻止ELmah报告此错误。

在没有实际创建/prx2.php页面的情况下排除这些类型的错误的最佳方法是什么。我也想在配置文件中执行此操作,而不是按预算执行。

有什么想法吗?

2 个答案:

答案 0 :(得分:18)

Elmah支持错误过滤 - Error Filtering link

这应该为您解决问题。您可以通过代码定义过滤器 - 在Global.asx文件中,或在elmah本身的xml配置中定义

答案 1 :(得分:4)

步骤1:配置配置部分以包含elmah errorFilter部分:

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

步骤2:在<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>    

步骤3:在应用程序模块中包含Elmah.ErrorFilterModule

包括http模块的现代(IIS7 +)版本:

<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>