asp.net-mvc http-status-code-404 elmah

ASP.NET MVC: Elmah no funciona y devuelve la página 404 para elmah.axd



asp.net-mvc http-status-code-404 (4)

Estoy tratando de usar elmah para mi aplicación MVC y he seguido los pasos en la wiki: http://code.google.com/p/elmah/wiki/MVC , pero aún así cuando intento acceder a myapp / elmah .axd la página:

404 - Archivo o directorio no encontrado.

¿Alguien podría ayudarme por favor?

OBS: Mi versión de IIS es 7.5

Si me ayuda, estoy publicando las secciones pertinentes de mi web.config:

<sectionGroup name="elmah"> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /> </sectionGroup> ... </connectionStrings> <elmah> <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data" /> </elmah> <system.web> ... <httpHandlers> <remove verb="*" path="*.asmx" /> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> </httpModules>

Y en mi Global.asax.cs

public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); ...


Aquí hay una buena manera de usar ELMAH en MVC here que no usa el axd sino un controlador y un ElmahActionResult personalizado.


Intente agregar esto a su archivo web.config en el

<system.webServer> <handlers> <remove name="ErrorLog" /> <remove name="ErrorMail" /> <remove name="ErrorFilter" /> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> </handlers> </system.webServer>


Para ayudar a otros a experimentar lo que @zanona se enfrentó en 2010 (ver comentarios a la respuesta de @ hunter más arriba), el siguiente cambio corrigió el mismo "Error HTTP 500.19 - Error interno del servidor" para mí hoy. Observe que la ubicación de las etiquetas de configuración en la respuesta de @ hunter es lo que causó el error de @zanona. Esas etiquetas @hunter mencionadas pertenecen al encabezado de los módulos, no a los manejadores uno!

<modules> <remove name="ErrorLog" /> <remove name="ErrorMail" /> <remove name="ErrorFilter" /> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> </modules>

La solución anterior eliminó para mí el mismo problema de "Error de configuración - Falta el atributo ''ruta''" que @zanona informó por primera vez. Ese error se debió a la forma en que se espera que se estructuren las etiquetas en el grupo de manejadores, y sus etiquetas reorganizadas causadas obviamente no tenían el atributo de ruta (porque no pertenecían allí, ¡sino que pertenecían a la etiqueta de módulos!) ). Ahora, aquí están las etiquetas en la sección de manejadores:

<handlers> <add name="elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> </handlers>

Observe que el atributo de ruta está presente allí? Ah!

Gracias a @hunter y @zanona porque me pusieron en el camino que necesitaba para resolver mi problema.

(NOTA: he intentado editar la publicación original de @hunter arriba para hacer las correcciones, pero la revisión por pares es lenta y pensé que mantendría esta respuesta aquí para ayudar a cualquier persona que se enfrente al mismo desafío mientras tanto. Aceptado, podríamos eliminar esta publicación.)


También debe completar la sección de configuración de system.webServer para IIS 7+. Vea esta pregunta .