2010-01-15 95 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