2010-01-15 5 views
18

J'utilise Elmah pour me connecter à un projet ASP.NET MVC et je reçois beaucoup d'erreurs 404 pour un chemin /prx2.php qui à son tour passe un hachage comme un paramètre querystring. Je suppose que c'est un scanner qui essaie de trouver des vulnérabilités. Parce que je ne cours pas PHP, je suis en sécurité! Cependant, je voudrais arrêter ELMah signaler cette erreur.Elmah signalant des erreurs 404 non désirées

Quel est le meilleur moyen d'exclure ce type d'erreur sans créer de page /prx2.php? Je voudrais aussi faire cela dans un fichier de configuration plutôt que de le faire de façon progmatique.

Des idées?

Répondre

18

Elmah prend en charge le filtrage d'erreur - Error Filtering link

Cela devrait résoudre le problème pour vous. Vous pouvez définir votre filtre par le code - dans le fichier Global.asx, ou dans la configuration XML pour ELMAH se

+0

Trouble est son un tout ou rien si je veux le faire dans un fichier de configuration par exemple '' filtres ALL 404 – Rippo

+0

Vous pouvez être plus précis dans les fichiers de configuration - voir la section Utilisation de JScript de ce lien. Cela vous montrera comment être plus précis et définir des conditions complexes en utilisant la syntaxe javascript, comme l'utilisation de RegEx sur l'URL pour faire correspondre des chemins spécifiques – saret

+1

+1 Merci, vous aurez l'air, même si cela semble un peu méchant! – Rippo

3

Etape 1: Configurer les sections de configuration pour inclure ELMAH section errorFilter:

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

Etape 2: Configurer le filtre lui-même dans la section <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>  

Etape 3: Inclure la Elmah.ErrorFilterModule dans vos modules d'application

Version moderne (IIS7 +) d'inclure le module http: Version

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

Héritage (ancien IIS) d'inclure le module http:

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

N'a pas utilisé cela depuis un moment mais ne filtre-t-il pas les "ALL" 404? Je veux juste certains types de fichiers, voir mon commentaire ci-dessus sur la réponse acceptée. Cette réponse n'aide pas tbh, désolé – Rippo

+0

@Rippo - mon mauvais - c'est juste que cette page se lève d'abord pour savoir comment supprimer 404 de la journalisation d'elmah et le lien dans la réponse acceptée est mort. Donc, j'ai résumé ici ce que j'ai appris de google :) De toute façon j'ai mis à jour ma réponse pour faire correspondre aussi "filtrer juste le chemin spécifique". –

Questions connexes