Pregunta

tengo un papel Web ASP.NET MVC se ejecuta en Windows Azure y tienen configuración ELMAH adecuadamente en el web.config. También tengo mi global.asax ignorar * rutas .axd. A nivel local, soy capaz de cargar /elmah.axd, sin embargo cuando se despliegan para Azure, consigo un 404 en esa página. Alguien ha conseguido ELMAH trabajando en Azure?

¿Fue útil?

Solución

Azure está basado en Windows Server 2008 y IIS7. Esto significa que se necesita para llenar la parte system.webServer del archivo web.config.

El archivo de ejemplo incluido con el código fuente de ELMAH contiene los detalles que usted necesita para poner en.

<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 se tendrá que incluir, y la sección en general deben contener la mayoría, si no todos los elementos de todos modos.

EDIT: Ya no es necesario ya que es ahora de forma predeterminada:

Para Elmah para trabajar también tendrá que modificar la siguiente línea en su archivo ServiceDefinition.csdef:

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

Otros consejos

También proteger el archivo para que los usuarios autorizados pueden ver solamente los registros de errores!

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

Creo, además, (a lo sugerido por @ mat1t aquí ) puede que tenga que configurar el acceso remoto a 1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top