Como configurar o ELMAH para trabalhar com o Windows Azure? Eu recebo um 404 em elmah.axd

StackOverflow https://stackoverflow.com/questions/939783

Pergunta

Eu tenho uma função Web ASP.NET MVC em execução no Windows Azure e tem configuração ELMAH corretamente no web.config. Eu também tenho meu global ignorar * .axd rotas. Localmente, eu sou capaz de carregar /elmah.axd, no entanto, quando eu implantar a Azure, recebo um 404 na página. Alguém conseguido ELMAH trabalhando em Azure?

Foi útil?

Solução

Azure é baseado no Windows Server 2008 e IIS7. Isso significa que você precisa para preencher a parte system.webServer do arquivo web.config.

O arquivo de exemplo incluído com o código fonte do elmah contém os detalhes que você precisa para colocar em.

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

Existem 2 linhas elmah no bloco acima de xml que você terá de incluir, ea seção em geral deve conter a maioria, se não todos esses elementos de qualquer maneira.

EDIT: Não é mais necessário, pois esta é agora ativada por padrão:

Para Elmah para trabalhar você também precisará modificar a seguinte linha no seu arquivo ServiceDefinition.csdef:

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

Outras dicas

Além disso proteger o arquivo para que somente usuários autorizados podem visualizar os logs de erros!

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

Eu acho que, adicionalmente, (o que sugere @ mat1t aqui ), você pode precisar configurar o acesso remoto a 1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top