Autres conseils

Si vous utilisez ASP.NET MVC, vous allez avoir besoin d'avoir le moteur de routage ignorer ce chemin. Si vous voulez déplacer ELMAH à /admin/elmah.axd par exemple, vous devez ajouter ce qui suit à Global.asax.cs:

routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");

Après avoir passé un certain temps à essayer d'obtenir ce à travailler en recollant les différents bits de conseils de chacune des réponses, je l'ai mis en place une solution complète qui devrait fonctionner pour toutes les saveurs de services Internet.

Voici ce qui doit être dans chacune de vos sections web.config:

<configuration>
  <configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>

  <elmah>
    <!-- set allowRemoteAccess="0" for extra security -->
    <security allowRemoteAccess="1"/>
  </elmah>

  <system.web>
    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
  </system.webServer>

  <location path="admin">
    <system.web>
      <authorization>
        <!--<allow users="Admin" /> -->
        <deny users="?" />
      </authorization>
      <httpHandlers>
        <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
      </httpHandlers>
    </system.web>
    <system.webServer>
      <handlers>
        <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
      </handlers>
    </system.webServer>
  </location>

</configuration>

Et si vous utilisez Asp.Net MVC, ajoutez

routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");

dans votre méthode RegisterRoutes.

Dans IIS 7.5 Windows Server 2008, il est une autre section intitulée system.webServer. Pour ELMAH travailler, cela devait être ajouté:

<system.webServer>
  <handlers>
   <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
  </handlers>
</system.webServer>

Je l'ai essayé quelques écarts, mais je ne peux pas utiliser la solution ci-dessus pour la prévention '/Blah/elmah.axd' de travailler.

Toutes les suggestions sur faire le travail de solution ci-dessus pour 7.x IIS?

Merci.

scroll top