Intenté usar elmah con mi sitio asp.net, pero cada vez que intento ir a http: // localhost: port / elmah.axd obtengo la excepción de recurso no encontrado. Mi web.config se muestra 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 y controladores de registro de errores)
http://code.google.com/p/elmah/
asp.net
exception-handling
elmah
TheVillageIdiot
fuente
fuente
elmah.axd
, el IIS se cuelga.Respuestas:
Intente registrar los módulos y controladores en las secciones "httphandlers" y "httpmodules" en la
<system.web>
sección:<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>
fuente
Acabo de tener un problema similar con Elmah que no funciona en una implementación de IIS7. Descubrí que necesitaba registrar los módulos y controladores de Elmah en
system.web
Ysystem.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>
fuente
<system.web>
se supone que es para IIS6 mientras que<system.webServer>
es para IIS7 + según stackoverflow.com/questions/355261/…Puede que también necesites este
<elmah> <security allowRemoteAccess="1" /> </elmah>
Cuando tengas
fuente
Faltaba esta línea 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>
Agregarlo resolvió el problema del error 404.
fuente
Una forma de evitarlo hoy es usar nuget.
Visual studio: menú-> herramientas-> administrador de paquetes de la biblioteca-> consola del administrador de paquetes
install-package elmah
HTH
fuente
El paquete nuget no agrega las siguientes líneas importantes a web.config, lo que genera 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 mediante
<add name="Elmah" verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
fuente
Si está utilizando Áreas, asegúrese de haber actualizado una de las claves de configuración de la aplicación.
Defecto
<add key="elmah.mvc.route" value="elmah" />
Si eres un área como Admin
<add key="elmah.mvc.route" value="admin/elmah" />
fuente