Domanda

ho un ruolo web ASP.NET MVC in esecuzione su Windows Azure e hanno configurazione ELMAH correttamente nel web.config. Ho anche il mio global.asax ignorare * Percorsi axd. A livello locale, sono in grado di caricare /elmah.axd, tuttavia quando schiero a Azure, ho un 404 in quella pagina. Qualcuno ha ottenuto ELMAH lavorare su Azure?

È stato utile?

Soluzione

Azure è basato su Windows Server 2008 e IIS7. Questo significa che è necessario compilare la parte system.webServer del file web.config.

Il file di esempio incluso con il codice sorgente del ELMAH contiene i dettagli che è necessario mettere in.

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

Ci sono 2 linee ELMAH nel blocco sopra di XML che sarà necessario includere, e la sezione, in generale, dovrebbe contenere la maggior parte se non tutti questi elementi in ogni caso.

EDIT: non è più necessario in quanto questo è ora attiva per impostazione predefinita:

Per Elmah funzionare è inoltre necessario modificare la seguente riga nel file ServiceDefinition.csdef:

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

Altri suggerimenti

garantire anche il file in modo solo gli utenti autorizzati possono visualizzare i log degli errori!

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

Credo inoltre (a quanto suggerito da @ mat1t qui ) potrebbe essere necessario impostare l'accesso remoto a 1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top