script net mvc example asp asp.net exception-handling elmah

asp.net - net - elmah mvc



Elmah no trabaja con el sitio asp.net (7)

Acabo de tener un problema similar con Elmah no trabajando en una implementación de IIS7. Descubrí que necesitaba registrar los Módulos y Manejadores de Elmah en system.web AND system.webServer :

<system.web> ... <httpHandlers> ... <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> ... </httpHandlers> <httpModules> ... <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> ... </httpModules> ... </system.web> <system.webServer> ... <modules runAllManagedModulesForAllRequests="true"> ... <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> ... </modules> <handlers> ... <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> ... </handlers> <system.webServer>

Intenté usar elmah con mi sitio asp.net pero cada vez que trato de ir a http://localhost:port/elmah.axd recibo una excepción de recurso no encontrado. Mi web.config se da a continuación.

<?xml version="1.0"?> <configuration> <configSections> <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> </configSections> <elmah> <security allowRemoteAccess="0" /> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-sql" /> <errorMail from="my@account" to="myself" subject="ERROR From Elmah:" async="true" smtpPort="587" smtpServer="smtp.gmail.com" userName="my@account" password="mypassword" /> </elmah> <connectionStrings> <add name="elmah-sql" connectionString="data source=(sqlserver); database=elmahdb; integrated security=false;User ID=user;Password=password"/> </connectionStrings> <system.web> <compilation debug="true"> <assemblies> <add assembly="Elmah, Version=1.0.10617.0, Culture=neutral, PublicKeyToken=null"/> </assemblies> </compilation> <authentication mode="Windows"/> <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"/> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules runAllManagedModulesForAllRequests="true"> <remove name="ScriptModule"/> <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <remove name="ScriptHandlerFactory"/> <remove name="ScriptHandlerFactoryAppServices"/> <remove name="ScriptResource"/> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/> </handlers> </system.webServer> </configuration>

EDITAR: Elmah = (Módulos de registro de errores y controladores)
http://code.google.com/p/elmah/


El paquete nuget no agrega las siguientes líneas importantes a web.config, lo que da como resultado un error 403.

<configuration> <elmah> <security allowRemoteAccess="1" /> <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/app_data/elmah" /> </elmah> </configuration>

También es posible que desee restringir el acceso a los registros de errores por

<add name="Elmah" verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />


Esta línea faltaba cuando instalé usando NuGet (VS 2013, IIS 8.0):

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

Al agregarlo, se solucionó el problema de error 404.


Intente registrar los Módulos y Manejadores en las secciones "httfandlers" y "httpmodules" en la sección <system.web> :

<httpHandlers> ...... <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> ..... </httpHandlers> <httpModules> ....... <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> ....... </httpModules>


Si está utilizando Áreas, asegúrese de haber actualizado una de las claves de aplicación.

Defecto

<add key="elmah.mvc.route" value="elmah" />

Si usted es un área como administrador

<add key="elmah.mvc.route" value="admin/elmah" />


Una forma de evitarlo hoy es usar nuget.

Visual Studio: menú-> herramientas-> administrador de paquetes de biblioteca-> consola de administrador de paquetes

install-package elmah

HTH


Es posible que también necesites este

<elmah> <security allowRemoteAccess="1" /> </elmah>

Cuando tengas

403 - Prohibido: Acceso denegado. No tiene permiso para ver este directorio o página utilizando las credenciales que ha proporcionado.