Pregunta ¿Cómo configurar ELMAH para que funcione con Windows Azure? Obtengo un 404 en Elmah.axd


Tengo una función web ASP.NET MVC ejecutándose en Windows Azure y tengo la configuración correcta de ELMAH en el web.config. También tengo mis rutas global.asax ignorar * .axd. Localmente, puedo cargar /elmah.axd, sin embargo, cuando implemente en Azure, obtengo un 404 en esa página. ¿Alguien ha conseguido que ELMAH trabaje en Azure?


36
2018-06-02 14:07


origen


Respuestas:


Azure está basado en Windows Server 2008 e IIS7. Esto significa que debe completar la parte system.webServer del archivo web.config.

El archivo de muestra incluido con el código fuente de Elmah contiene los detalles que debe incluir.

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <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="ErrorLog" type="Elmah.ErrorLogModule, 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" type="Elmah.ErrorLogPageFactory, Elmah" />
  </handlers>
</system.webServer>

Hay 2 líneas elmah en el bloque anterior de xml que deberá incluir, y la sección en general debería contener la mayoría si no todos esos elementos de todos modos.

EDITAR: ya no es necesario, ya que esto está ahora activado por defecto:

Para que Elmah funcione, también necesitarás modificar la siguiente línea en tu archivo ServiceDefinition.csdef:

<WebRole name="WebRole" enableNativeCodeExecution="true">


26
2018-06-10 20:25



¡También asegure el archivo para que solo los usuarios permitidos puedan ver los registros de errores!

<location path="admin/elmah.axd">
    <system.web>
        <authorization>
            <allow roles="Administrator" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

11
2017-07-06 20:25



Creo que adicionalmente (a lo sugerido por @ mat1t aquí) puede necesitar configurar el acceso remoto a 1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>

9
2018-06-15 07:14