2010-01-15 12 views
18

Ich benutze Elmah für die Anmeldung in einem ASP.NET MVC Projekt und ich bekomme viele 404 Fehler für einen Pfad/prx2.php, die ihrerseits einen Hash als Querystring Param übergeben.Elmah meldet unerwünschte 404 Fehler

Ich nehme an, das ist ein Scanner, der versucht, Schwachstellen zu finden. Weil ich PHP nicht betreibe, bin ich sicher! Ich möchte jedoch verhindern, dass ELmah diesen Fehler meldet.

Was ist der beste Weg, um diese Art von Fehlern von der Berichterstattung auszuschließen, ohne eine /prx2.php Seite zu erstellen. Ich möchte das auch in einer Konfigurationsdatei machen, anstatt es progmatisch zu machen.

Irgendwelche Ideen?

Antwort

18

Elmah unterstützt Fehler Filterung - Error Filtering link

Dies sollte für Sie das Problem lösen. Sie können entweder Ihren Filter durch den Code definieren - in der Global.asx-Datei oder in der XML-Konfiguration für Elmah selbst

+0

Problem ist es ein Alles oder nichts, wenn ich dies in einer Konfigurationsdatei zB tun möchte '' filtert ALL 404 – Rippo

+0

Sie können genauer in den Konfigurationsdateien sein - siehe den JScript-Abschnitt dieses Links. Dies wird Ihnen zeigen, wie Sie genauer zu sein und komplexe Bedingungen mit JavaScript-Syntax wie RegEx auf der URL zu bestimmten Pfaden – saret

+1

+1 Dank wird aussehen, obwohl das sieht ein bisschen eklig aussehen! – Rippo

3

Schritt 1: config Abschnitte konfigurieren Elmah errorFilter Abschnitt enthalten:

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

Schritt 2: Konfigurieren der Filter selbst in <elmah> Abschnitt.

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

Schritt 3: Fügen Sie die Elmah.ErrorFilterModule in Ihrem Anwendungsmodule

Modern (IIS7 +) Version einschließlich http-Modul:

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

Legacy (ältere IIS) Version einschließlich http-Modul:

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

Habe das schon lange nicht mehr benutzt, aber filtert das nicht 'ALLE' 404's? Ich möchte nur bestimmte Dateitypen, siehe oben meinen Kommentar zur angenommenen Antwort. Diese Antwort hilft nicht tbh, sorry – Rippo

+0

@Rippo - mein Schlechter - es ist nur, dass diese Seite zuerst für das Entfernen von 404 von Elmah Protokollierung kommt und der Link in der angenommenen Antwort ist tot. Also habe ich hier zusammengefasst, was ich von Google gelernt habe :) Jedenfalls habe ich meine Antwort aktualisiert um auch "Filter nur bestimmten Pfad" zu finden. –