Me di cuenta de que ELMAH registra un 404 no encontrado para favico en mi servidor local. ¿Cómo suprimo este error a través de un filtro? No estoy tan familiarizado con la configuración todavía ...Error 404 FavIco del bloque en ELMAh
Respuesta
El elh oficial Error Filtering page explica varias formas en que se puede suprimir este error de favicon 404.
Puede filtrar todos errores 404 declarativamente en la web.config como tal. Sin embargo, no estoy seguro de que exista una forma de suprimir un 404 para un favicon.
<errorFilter>
<test>
<equal binding="HttpStatusCode" value="404" type="Int32" />
</test>
</errorFilter>
Si quisiera hacerlo mediante programación, podría descartar el error en los eventos de filtrado ErrorLog o ErrorEmail como se explica en los documentos oficiales. El código siguiente es un poco exagerado, pero demuestra cómo podría filtrar solo errores 404 para una solicitud /favicon.ico.
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (((HttpException)e.Exception.GetBaseException()).GetHttpCode() == 404
&& ((HttpContext)e.Context).Request.Path == "/favicon.ico")
{
e.Dismiss();
}
}
me gustaría personalmente prefiero a cualquiera de los filtros todos los 404 declarativa a través del web.config, o simplemente proporcionar un favicon como Joel sugiere.
No le ayuda a aprender a configurar ELMAH, pero la manera más fácil de evitar un 404 para las solicitudes de un favicon es proporcionarle uno ...
simplemente ignoro la ruta en lugar de configurar Elmah. Esto funciona para mí:
routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"});
¿Estás seguro de que has verificado esto con ELMAH? Ignorar la ruta no funciona. Simplemente provoca que MVC ignore la solicitud y la transfiere a la canalización regular de ASP.NET que la contiene, lo que hace que se registre en ELMAH. –
Ha pasado un tiempo desde que miré ese código, así que tendría que volver a verificarlo, pero utilicé la técnica en un sitio en vivo y pareció funcionar para mí. ¿Es una diferencia entre IIS6 e IIS7? – Junto
Si lo necesita o no depende de la configuración del servidor. Para Cassini (depuración de Visual Studio), esos 404 son registrados por Elmah. Para IIS 6, Elmah no los ve si el enrutamiento los ignora. No he probado IIS 7. –
Estaba usando la solución programática de Kurt Schindler anterior (vs config); sin embargo, noté que las excepciones que no son HttpExceptions se lanzaban dos veces en el controlador de eventos ErrorLog_Filtering. Para evitar esto, asegúrese de hacer una comprobación de tipo en el método GetBaseException. Aquí está el fragmento
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if (e.Exception.GetBaseException() is HttpException)
{
if (((HttpException)e.Exception.GetBaseException()).GetHttpCode() == 404
&& ((HttpContext)e.Context).Request.Path == "/favicon.ico")
{
e.Dismiss();
}
}
}
Nada nuevo aquí, solo un FYI si observas un comportamiento extraño.
Gracias ...
No es que mi aplicación web está solicitando un favicon, es que cuando me vaya a la página de elmah.axd, el navegador solicita un favicon.
Supuestamente, esto debería funcionar:
<elmah>
<errorFilter>
<test>
<and>
<equal binding="HttpStatusCode"
value="404" type="Int32" />
<regex binding="Context.Request.ServerVariables['URL']"
pattern="/favicon\.ico(\z|\?)" />
</and>
</test>
</errorFilter>
</elmah>
Pero adivinen qué, no lo hace.
La única forma en que he encontrado que funciona es agregar un favicon.ico a mi raíz web. Esto no es para mi sitio, es solo para la página elmah.axd. NO es necesario llamar a route.IgnoreRoute.
Aquí está elmah.axd con mi favicon, y no hay errores:
Oye, Matt, debe asegurarse de registrar su ErrorFilter tanto en el httpModule como en el Módulos system.webServer: y deben registrarse después de que los manejadores ErrorLog sean (o cualquier otro módulo de registro): es una pila inversa, prioritaria. –
@Matt Enright Buen comentario. – Kuncevic
que era capaz de conseguir ELMAH ignorar el error utilizando el código de abajo. También podría agregar otras rutas que desee ignorar. Técnicamente, estas podrían ser pruebas separadas, pero en caso de que quiera ignorar otros errores 404 en el futuro que están relacionados con mi aplicación, pensé que los dejaría agrupados ya que no dependen de mi aplicación en absoluto y están aquí únicamente. para eliminar el desorden de mi registro de errores
<errorFilter>
<test>
<or>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<equal binding="Context.Request.Path" value="/favicon.ico" type="string" />
</and>
<and>
<equal binding="HttpStatusCode" value="404" type="Int32" />
<equal binding="Context.Request.Path" value="/robots.txt" type="string" />
</and>
</or>
</test>
</errorFilter>
Por supuesto, si usted está preocupado acerca de este estorbar su web.config siempre se puede dividir los filtros en un archivo dedicado.
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sqlserver" />
<errorFilter configSource="elmahFilters.config" />
</elmah>
- 1. ELMAH - Errores de filtrado 404
- 2. Elmah informando errores 404 no deseados
- 3. Clientside error logging using Elmah
- 4. node.js + connect error 404
- 5. OpenRDF Sesame - error 404
- 6. Apache Tomcat 404 Error
- 7. error 404 con ClientBin
- 8. ELMAH vs Enterprise Library Bloque de manejo de excepciones
- 9. WCF sobre SSL - error 404
- 10. Error personalizado de Django 404
- 11. error 404 con wordpress ssl
- 12. 404 Error ASP.NET MVC 3
- 13. Cómo "arrojar" error JSF2 404?
- 14. Elmah filtro 404 errores de los correos electrónicos, pero ingrese a la base de datos
- 15. Elmah no registra excepciones
- 16. En Kohana, ¿puede desencadenar un error 404?
- 17. Cómo atrapar el error 404 en urllib.urlretrieve
- 18. filtrado ELMAH no trabajar
- 19. ¿Cómo configurar ELMAH para que funcione con Windows Azure? Obtengo un 404 en Elmah.axd
- 20. ¿Cómo puedo mostrar la página de error 404 en lugar del error de enrutamiento?
- 21. Problemas de error 404 personalizados con Apache
- 22. Configuración ELMAH: la sección de configuración de error no reconocido
- 23. No se pueden registrar errores de Código 500 en ELMAH
- 24. bloque catch error no requerían
- 25. bloque del depurador
- 26. Slim Framework siempre devuelve 404 Error
- 27. Nginx: Return 301 Redirect When 404 Error
- 28. Los archivos .axd generan un error 404
- 29. Error básico de Rails 404 Página
- 30. error 404 en la configuración personalizada de Magento en admin
Esto haría el trabajo, pero yo no recomendaría filtrar * todos * 404 errores. Eso es como limitar el poder de ELMAH. Estoy más a favor del enfoque de Joel en el que realmente * arreglas * el problema. – senfo
loL! Acabo de ir ... oh sí, ¡puedo agregar un favicon! – gideon