代码之家  ›  专栏  ›  技术社区  ›  Rippo

Elmah报告不需要的404错误

  •  18
  • Rippo  · 技术社区  · 15 年前

    我正在使用elmah登录一个ASP.NET MVC项目,并且我正在为一个path/prx2.php接收大量404错误,这反过来又将哈希作为querystring参数传递。

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

    在不实际创建/prx2.php页面的情况下,排除这些类型错误的最佳方法是什么?我还希望在配置文件中执行此操作,而不是通过编程来执行。

    有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  18
  •   saret    15 年前

    Elmah支持错误过滤- Error Filtering link

    这应该能帮你解决问题。您可以通过global.asx文件中的代码或elmah本身的XML配置来定义过滤器。

        2
  •  4
  •   Ondrej Svejdar    7 年前

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

    包含HTTP模块的旧版(旧版IIS):

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