Frage IIS beschwert sich über einen gesperrten Abschnitt - wie kann ich herausfinden, wo es gesperrt ist?


Ich habe diesen Abschnitt in meiner web.config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
        <authentication>
            <anonymousAuthentication enabled="true" />
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
</system.webServer>

IIS7 stürzt ab und beschwert sich über die Autentication-Sektion:

Modul AnonymousAuthenticationModule
     Benachrichtigung AuthenticateRequest
     Handler StaticFile
     Fehlercode 0x80070021
     Config Error Dieser Konfigurationsabschnitt kann in diesem Pfad nicht verwendet werden. Dies geschieht, wenn der Abschnitt auf einer übergeordneten Ebene gesperrt ist. Sperren ist entweder standardmäßig (overrideModeDefault = "Verweigern") oder explizit durch ein location-Tag mit overrideMode = "Deny" oder dem Legacy-allowOverride = "false" festgelegt.

Config Source  
   69:  <authentication>
   70:    <anonymousAuthentication enabled="true" />

Der übliche Weg, dies zu lösen, ist es, darauf einzugehen %windir%\system32\inetsrv\config\applicationHost.config und entsperren Sie den Abschnitt:

    <sectionGroup name="system.webServer">
        <sectionGroup name="security">
            <section name="access" overrideModeDefault="Deny" />
            <section name="applicationDependencies" overrideModeDefault="Deny" />
            <sectionGroup name="authentication">
                <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                <section name="basicAuthentication" overrideModeDefault="Allow" />
                <section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="digestAuthentication" overrideModeDefault="Allow" />
                <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="windowsAuthentication" overrideModeDefault="Allow" />
            </sectionGroup>

(Alternative, appcmd unlock config).

Das Seltsame: Ich habe das getan und es beschwert sich immer noch.

Ich suchte nach Standorten (MVC ist der Name meiner Website, die die Wurzel aller Websites ist, die ich verwende):

<location path="MVC" overrideMode="Allow">
    <system.webServer overrideMode="Allow">
        <security overrideMode="Allow">
            <authentication overrideMode="Allow">
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="true" />
            </authentication>
        </security>
    </system.webServer>
</location>

Trotzdem explodiert es. Ich bin verwirrt, warum das passiert. Ich kann es nicht aus der web.config entfernen, ich möchte das Grundproblem finden.

Gibt es eine Möglichkeit, spezifische Informationen von IIS zu bekommen, welche Regel mich letztendlich leugnet?

Bearbeiten: Ich konnte das Problem mit der IIS7-Verwaltungskonsole beheben, indem ich zum eigentlichen Stamm (meinem Computer) ging und auf "Konfiguration bearbeiten" klickte und dort den Abschnitt entsperrte. Trotzdem würde ich gerne wissen, ob es einen besseren Weg gibt, da ich die Datei nicht finden kann, die sie tatsächlich modifiziert.


44
2018-02-15 16:48


Ursprung


Aus dem Speicher gibt es normalerweise einen Abschnitt in der 500.19, der Ihnen sagt, welche Datei an welchem ​​Ort in Frage steht, ganz unten (glaube ich). - TristanK
Dies wurde sehr gut beantwortet über SO - paqogomez


Antworten:


Arbeitete diese Schritte aus, die das Problem für mich beheben:

  1. Öffnen Sie den IIS-Manager
  2. Klicken Sie auf den Servernamen in der Baumstruktur auf der linken Seite
  3. Rechter Bereich, Bereich Verwaltung, doppelklicken Sie auf Konfigurationseditor
  4. Wählen Sie oben den Abschnitt aus system.webServer/security/authentication/anonymousAuthentication
  5. Klicken Sie im rechten Bereich auf Abschnitt entsperren
  6. Wählen Sie oben den Abschnitt aus system.webServer/security/authentication/windowsAuthentication
  7. Klicken Sie im rechten Bereich auf Abschnitt entsperren

68
2018-06-19 11:40



Hat dies ein PowerShell-Äquivalent? Ich würde gerne in der Lage sein, dies zu skripten. - Pete Stensønes
Wenn Sie einen finden, zögern Sie nicht, es zu posten :) - tomfanning
Ich werde, ich habe gehofft, dass jemand anders schon wusste wie. - Pete Stensønes


Das hat meinen Fehler behoben Windows Server 2012, IIS 8.5. Sollte auch für andere Versionen funktionieren.

  1. Gehe zu Server Administrator, klicken Sie auf Hinzufügen Rollen und Funktionen
  2. Im Bereich Rollen wählen Sie: Webserver
  3. Unter Sicherheit Unterabschnitt wähle alles (Ich habe Digest, IP-Einschränkungen und URL-Autorisierung ausgeschlossen, da wir sie nicht verwenden)
  4. Unter Anwendungsentwicklung wählen .NET Extensibility 4.5 und ASP>NET 4.5, beide ISAPI-Einträge
  5. In dem Eigenschaften Abschnitt wählen Sie: NET 3.5, .NET 4.5, ASP.NET 4.5
  6. In dem Webserver Abschnitt wählen Sie: Web Server (all), Management Tools (IIS Management Console and Management Service), Windows 

10
2018-04-25 13:41





Die Sperrung der Konfiguration kann passieren bei:

  1. Applicationhost.config (Konfigurationszeichenfolge: MACHINE / WEBROOT / APPHOST)

  2. eine Website Web.config-Datei (MACHINE / WEBROOT / APPHOST / Name der Website)

  3. Jede App web.config-Datei, die (MACHINE / WEBROOT / APPHOST / Site Name / App Name)

Sperren eines Abschnitts (Abschnitt: IIS-Konfigurationsabschnitt, z. B. <asp>) können Sie die Möglichkeit verweigern, diese Einstellungen für jeden auf einer niedrigeren Ebene in der Hierarchie als Sie zu konfigurieren.

Die Verwendung des GUI-Feature-Delegierungs-Dings ist nicht falsch und ähnelt AppCMD sehr ähnlich, unter dem Deckmantel - setzt OverrideMode für einen bestimmten Abschnitt in a <location> Tag auf jeder Ebene der Konfiguration, auf die Sie sich konzentrieren.

APPCMD kann zum Entsperren von Dateien verwendet werden, aber achten Sie darauf, wo es heißt, es ist nicht so schlau wie die GUI darüber.

Hinzufügen -commit:apphost bis zum Ende deines APPCMD UNLOCK Befehl Ziele Applicationhost.config, was ist das Schlüsseldatei für den IIS-Vorgang (ersetzt die Metabasis von früheren Versionen; speichert alle zentralisierten Einstellungen, erlaubt jedoch Überschreibungen in web.config-Dateien).

Ohne -commit: apphost zielt APPCMD auf den nächstgelegenen logischen Punkt für eine web.config-Datei ab - ob auf Website- oder App-Ebene und zeigt an, dass die Einstellung mit einer Konfigurationszeichenfolge wie der oben genannten geändert wurde. (Nebenbei: Sie können immer nur die Einstellungen in Unterwebsites ausrichten, aber commh zu Apphost - es verwendet Location-Tags, um das zu erreichen)

Wenn es also heißt (Speicherparaphrase) "Änderungen an MACHINE / WEBROOT / APPHOST", würde dies die oberste Ebene der IIS-Hierarchie bedeuten.

Wenn "MACHINE / WEBROOT / APPHOST / Dodgy Web Site" angegeben ist, heißt das, dass der physikalische Pfad hinter der Dodgy-Website nachgeschlagen wurde und eine web.config-Datei an diesem Speicherort geschrieben (oder aktualisiert) wurde.


4
2018-02-15 21:11





Wenn Sie IISExpress und Visual Studio 2015 verwenden, applicationHost.config ist in gespeichert $(solutionDir).vs\config\applicationhost.config (Danke an Nime Cloud Antworten).

Nur ändern overrideModeDefault="Allow" wo immer es angebracht ist.

<sectionGroup name="security">
    <section name="access" overrideModeDefault="Deny" />
    <section name="applicationDependencies" overrideModeDefault="Deny" />
    <sectionGroup name="authentication">
        <section name="anonymousAuthentication" overrideModeDefault="Allow" />
etc...

1
2017-08-03 19:20





Versuchen Sie in Ihrem Anwendungs- Pool, Deaktivieren Sie 32-Bit-Anwendungen IIS-Manager -> Anwendungspools -> wählen Sie [Ihr AppPool] -> Erweiterte Einstellungen -> 32-Bit-Anwendungen aktivieren - ändern Sie es in "False"


0
2017-12-10 19:40





Sieh dir das an IIS - Dieser Konfigurationsabschnitt kann nicht auf diesem Pfad verwendet werden (Konfigurationssperrung?)

Die angenommene Antwort funktionierte perfekt für mich auf Windows 10, es weist an, folgendes zu tun:

  • Klicken Sie auf "Start-Schaltfläche"
  • Geben Sie im Suchfeld "Windows-Funktionen aktivieren oder deaktivieren" ein.
  • Klicken Sie im Featurefenster auf "Internetinformationsdienste".
  • Klicken Sie auf "World Wide Web Services"
  • Klicken Sie auf "Anwendungsentwicklungsfunktionen"
  • Überprüfen (aktivieren) Sie die Funktionen. Ich habe alles außer CGI überprüft.

-2
2018-06-30 17:13