2010-01-15 15 views
18

Sto usando Elmah per accedere a un progetto ASP.NET MVC e sto ricevendo molti errori 404 per un percorso /prx2.php che a sua volta sta passando un hash come parametro querystring.Elmah che segnala errori indesiderati 404

Presumo che si tratti di uno scanner che cerca di individuare le vulnerabilità. Perché non sto eseguendo PHP sono al sicuro! Tuttavia mi piacerebbe fermare ELmah riportando questo errore.

Qual è il modo migliore per escludere questi tipi di errori dai rapporti senza effettivamente creare una pagina di /prx2.php. Vorrei anche farlo in un file di configurazione piuttosto che farlo in modo progmatico.

Qualche idea?

risposta

18

Elmah supporta il filtro errore - Error Filtering link

Questo dovrebbe risolvere il problema per voi. È possibile definire il filtro attraverso il codice - nel file Global.asx, o all'interno della configurazione XML per sé ELMAH

+0

Il problema è tutto o niente se voglio farlo in un file di configurazione, ad es. '' filters ALL 404 – Rippo

+0

Puoi essere più specifico nei file di configurazione - vedi la sezione Using JScript di quel link. Questo ti mostrerà come essere più specifico e definire condizioni complesse usando la sintassi javascript come usare RegEx sull'URL per abbinare percorsi specifici – saret

+1

+1 Grazie avrà un aspetto, anche se questo sembra un po 'brutto! – Rippo

3

Step1: Configurare le sezioni di configurazione per includere ELMAH errorFilter sezione:

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

Fase 2: Configurare il filtrare se stesso nella sezione <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>  

Fase 3: Calcola il Elmah.ErrorFilterModule dentro i moduli applicativi

moderna versione (IIS7 +) di includere il modulo http: versione

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

Legacy (IIS più vecchio) di includere il modulo http:

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

Non l'ho usato da un po ', ma questo non esclude 'ALL' 404's? Voglio solo determinati tipi di file, vedere il mio commento sopra sulla risposta accettata. Questa risposta non aiuta tbh, mi dispiace – Rippo

+0

@Rippo - il mio male - è solo che questa pagina viene in primo luogo per come rimuovere 404 da elmah logging e il link nella risposta accettata è morto. Quindi ho riassunto qui quello che ho imparato da google :) Ad ogni modo ho aggiornato la mia risposta in modo che corrisponda anche a "filtra solo il percorso specifico". –

Problemi correlati