2010-01-22 14 views
15

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 aun así cuando intento acceder myapp/elmah.axd la página:ASP.NET MVC - Elmah no funciona y devuelve la página 404 para elmah.axd

404 - Archivo o directorio no encontrado.

¿Alguien podría ayudarme por favor?

OBS: Mi versión de IIS es 7,5


Si ayuda les dejo 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}"); 
... 
+0

¿Cuál es su versión de IIS? – Restuta

+0

¿Qué versión de IIS estás usando? Solo pregunto porque tal vez el controlador no está en la sección correcta de .config. En IIS7, debe estar en la sección . Podría ser algo completamente diferente ... – hunter

+0

Gracias chicos, estoy usando IIS 7.5 – zanona

Respuesta

2

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> 
+1

Es extraño, ahora obtengo un error de servidor interno 500 - – zanona

+0

Error de configuración Falta el atributo requerido 'ruta' – zanona

6

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

+0

Esto es genial (NuGet simplemente no puso en la configuración correcta para mí) pero debería quitar el principal código partes y pégalas aquí para evitar link-rot en SO. Gracias por la solución. –

0

Para ayudar a otros a experimentar lo que @zanona encontró en 2010 (ver comentarios a la respuesta de @ hunter), el siguiente cambio solucionó el mismo "Error HTTP 500.19 - Error interno del servidor" 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 controladores!

<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 revisión anterior eliminado para mí el mismo "Error de configuración - Missing 'camino' requerido atributo" tema que @zanona informó por primera vez. Ese error vino como resultado de la forma en que se espera que las etiquetas en el grupo de manejadores estén estructuradas, y sus etiquetas reorganizadas obviamente no tenían el atributo de ruta (¡porque no pertenecían allí, sino que pertenecían a la etiqueta de módulos!) Ahora esto es lo que las etiquetas de los controladores de sección debe verse como:

<handlers> 

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

</handlers> 

Aviso 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 anterior para hacer las correcciones pero la revisión por pares es lenta y pensé que mantendría esta respuesta aquí para ayudar a cualquiera que se enfrente al mismo desafío mientras tanto. Cuando se acepte esa edición, podríamos eliminar esta publicación.)

Cuestiones relacionadas