Ho un ruolo web ASP.NET MVC in esecuzione su Windows Azure e ho configurato correttamente ELMAH nel web.config. Ho anche il mio global.asax ignora i percorsi * .axd. A livello locale, sono in grado di caricare /elmah.axd, tuttavia quando eseguo la distribuzione in Azure, ottengo un 404 in quella pagina. Qualcuno ha mai provato ELMAH su Azure?Come configurare ELMAH per funzionare con Windows Azure? Ottengo un 404 su Elmah.axd
risposta
Azure si basa su Windows Server 2008 e IIS7. Ciò significa che è necessario popolare 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 comunque.
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">
ho avuto funziona localmente sul mio PC Vista ma sul server live non funzionava finché non ho aggiunto le 2 linee Elmah che hai menzionato nella parte inferiore di web.config. Non ho dovuto andare nel file ServiceDefinition però. Una volta apportate queste modifiche, ricevevo un errore 403, motivo per cui è necessario impostare allowRemoteAccess su 1 – KevinUK
Inoltre, sto utilizzando l'SDK di Azure di ottobre 2012 e ho trovato che avevo solo bisogno del (1)
enableNativeCodeExecution è impostato su true per impostazione predefinita in ogni caso: http://msdn.microsoft.com/en-us/library/windowsazure/gg557553.aspx –
Penso inoltre (a quanto suggerito da @mat1t here) potrebbe essere necessario impostare l'accesso remoto a 1:
<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
grazie, questo passaggio è assolutamente necessario –
Proteggi anche il file in modo che solo gli utenti autorizzati possano visualizzare i log degli errori!
<location path="admin/elmah.axd">
<system.web>
<authorization>
<allow roles="Administrator" />
<deny users="*" />
</authorization>
</system.web>
</location>
C'è un'opzione web.config
Vedi anche http://stackoverflow.com/questions/2118248/asp-net-mvc-elmah-not-working-and-returning-404-page-for-elmah-axd/5205564 –