Comment configurer ELMAH pour fonctionner avec Windows Azure? Je reçois un 404 sur Elmah.axd

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

Question

J'ai un rôle Web ASP.NET MVC fonctionnant sur Windows Azure et ont la configuration ELMAH correctement dans le web.config. J'ai aussi mon global.asax ignorer * routes .axd. Localement, je suis en mesure de charger /elmah.axd, mais quand je Azure à déployer, je reçois un 404 sur cette page. Quelqu'un at-il obtenu ELMAH travailler sur Azure?

Était-ce utile?

La solution

Azure est basé sur Windows Server 2008 et IIS7. Cela signifie que vous devez remplir la partie system.webServer du fichier web.config.

Le fichier exemple fourni avec le code source de ELMAH contient les détails que vous devez mettre 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>

Il y a 2 lignes Elmah dans le bloc ci-dessus xml que vous aurez besoin d'inclure, et la section en général devraient contenir la plupart, sinon tous ces éléments de toute façon.

EDIT: plus nécessaire comme cela est maintenant par défaut:

Pour Elmah travailler, vous devrez également modifier la ligne suivante dans votre fichier ServiceDefinition.csdef:

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

Autres conseils

sécuriser également le fichier utilisateurs afin que autorisés peuvent consulter les journaux d'erreur!

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

Je pense en plus (ce que suggéré par @ mat1t ) vous devrez peut-être définir l'accès à distance à 1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top