Andere Tipps

Wenn Sie ASP.NET MVC verwenden, Sie gehen zu müssen das Routing-Engine haben, diesen Weg zu ignorieren. Wenn Sie zum Beispiel bewegen Elmah /admin/elmah.axd wollen, sollten Sie Folgendes Global.asax.cs hinzufügen:

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

Nachdem eine Weile damit verbracht, dies zur Arbeit kommen Patchen die verschiedene Bits der Beratung von jedem der Antworten zusammen, habe ich zusammen eine Komplettlösung, die für alle Varianten von IIS funktionieren soll.

Hier ist, was in jedem Ihrer web.config Abschnitte werden muss:

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

Und wenn Sie Asp.Net MVC verwenden, fügen

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

in Ihrer RegisterRoutes Methode.

In IIS 7.5 Windows Server 2008 gibt es einen weiteren Abschnitt namens system.webServer. Damit ELMAH zu arbeiten, hatten diese hinzugefügt werden:

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

Ich habe ein paar Abweichungen versucht, aber ich bin nicht in der Lage, die oben genannte Lösung zu verwenden, um zu verhindern '/Blah/elmah.axd' von der Arbeit.

Irgendwelche Vorschläge auf, so dass die oben genannte Lösung Arbeit für IIS 7.x?

Danke.

scroll top