2010-01-15 12 views
18

Estoy usando Elmah para iniciar sesión en un proyecto MVC de ASP.NET y estoy recibiendo muchos errores 404 para una ruta /prx2.php que a su vez está pasando un hash como un param de cadena de consulta.Elmah informando errores 404 no deseados

Supongo que se trata de un escáner que intenta encontrar vulnerabilidades. ¡Porque no estoy ejecutando PHP, estoy a salvo! Sin embargo, me gustaría evitar que ELmah reporte este error.

Cuál es la mejor manera de excluir este tipo de errores de la creación de informes sin crear realmente una página /prx2.php. También me gustaría hacer esto en un archivo de configuración en lugar de hacerlo de forma progmática.

¿Alguna idea?

Respuesta

18

Elmah admite el filtrado de error - Error Filtering link

Esto debería resolver el problema para usted. Usted puede definir su filtro a través del código - en el archivo Global.asx, o dentro de la configuración XML para ELMAH sí

+0

Problema es que es un todo o nada si quiero hacer esto en un archivo de configuración, por ejemplo '' filters ALL 404 – Rippo

+0

Puede ser más específico en los archivos de configuración; consulte la sección Uso de JScript de ese enlace. Esto le mostrará cómo ser más específico y definir condiciones complejas utilizando la sintaxis de JavaScript, como usar RegEx en la URL para coincidir con las rutas específicas – saret

+1

+1 ¡Las gracias tendrán aspecto, aunque esto se ve un poco desagradable! – Rippo

3

Paso 1: Configurar las secciones de configuración para incluir ELMAH errorFilter sección:

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

Paso 2: Configurar el filtrarse en la sección <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>  

Paso 3: Incluir el Elmah.ErrorFilterModule dentro de sus módulos de aplicación

versión moderna (IIS7 +) de incluir el módulo http:

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

Legacy (IIS mayores) de la versión con módulo http:

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

No lo he usado por un tiempo, pero ¿esto no filtra 'ALL' 404's? Solo quiero ciertos tipos de archivos, vea mi comentario anterior en la respuesta aceptada. Esta respuesta no ayuda a tbh, lo siento – Rippo

+0

@Rippo - mi mal - es solo que esta página aparece primero sobre cómo eliminar 404 de Elmah Logging y el enlace en la respuesta aceptada está muerto. Así que resumí aquí lo que aprendí de google :) De todos modos, actualicé mi respuesta para que coincida también con "filtrar solo la ruta específica". –

Cuestiones relacionadas