it-swarm.com.de

IIS beschwert sich über einen gesperrten Abschnitt - wie kann ich herausfinden, wo er 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 den Abschnitt zur Autientifizierung:

Modul AnonymousAuthenticationModule
Benachrichtigung AuthenticateRequest
Handler StaticFile
Fehlercode 0x80070021
Konfigurationsfehler Dieser Konfigurationsabschnitt kann unter diesem Pfad nicht verwendet werden. Dies geschieht, wenn der Abschnitt auf übergeordneter Ebene gesperrt ist. Das Sperren erfolgt entweder standardmäßig (overrideModeDefault = "Deny") oder wird explizit durch ein Standort-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, besteht darin, in %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 habe nach Standorten gesucht (MVC ist der Name meiner Website, der das Stammverzeichnis aller von mir verwendeten Websites ist):

<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 Root-Problem finden.

Gibt es eine Möglichkeit, bestimmte Informationen von IIS zu erhalten, welche Regel verweigert mich schließlich?

Bearbeiten : Ich konnte dies mithilfe der IIS7-Verwaltungskonsole beheben, indem ich zum Stammverzeichnis (meinem Computer) ging, auf "Konfiguration bearbeiten" klickte und den dortigen Abschnitt entsperrte. Trotzdem würde ich gerne wissen, ob es einen besseren Weg gibt, da ich die Datei, die tatsächlich geändert wird, nicht finden kann.

59
Michael Stum

Hat diese Schritte ausgearbeitet, die das Problem für mich beheben:

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

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

  1. Gehen Sie zu Server Manager und klicken Sie auf Hinzufügen Rollen und Funktionen
  2. Wählen Sie im Abschnitt Rollen: Webserver
  3. Wählen Sie unter Sicherheit alles aus (ich habe Digest, IP-Einschränkungen und URL-Autorisierung ausgeschlossen, da wir sie nicht verwenden).
  4. Wählen Sie unter Anwendungsentwicklung.NET Extensibility 4.5 Und ASP>NET 4.5 Beide ISAPI-Einträge
  5. Wählen Sie im Abschnitt Features: NET 3.5, .NET 4.5, ASP.NET 4.5
  6. Wählen Sie im Abschnitt Webserver Folgendes aus: Web Server (all), Management Tools (IIS Management Console and Management Service), Windows
15

Konfigurationssperre kann erfolgen bei:

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

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

  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 Personen auf einer niedrigeren Hierarchieebene als Sie zu konfigurieren.

Die Verwendung der Feature-Delegierung der grafischen Benutzeroberfläche ist nicht falsch und funktioniert sehr ähnlich wie AppCMD unter den Deckblättern - setzt OverrideMode für einen bestimmten Abschnitt in einem <location> Tag auf jeder Konfigurationsebene, 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 intelligent wie die GUI.

Hinzufügen von -commit:apphost bis zum Ende deines APPCMD UNLOCK Befehl zielt auf Applicationhost.config ab, dh die Schlüsseldatei für IIS Operation (ersetzt die Metabasis aus früheren Versionen; speichert alle zentralisierten Einstellungen, erlaubt jedoch Überschreibungen (falls Sie dies zulassen) do) in web.config-Dateien).

Ohne -commit: apphost zielt APPCMD auf den nächstgelegenen logischen Punkt für eine web.config-Datei ab - ob auf Site- oder App-Ebene - und gibt an, dass die Einstellung mithilfe einer Konfigurationszeichenfolge wie der oben angegebenen geändert wurde. (Abgesehen davon: Sie können immer noch nur die Einstellungen auf Unterwebsites als Ziel festlegen, sich jedoch für Apphost festlegen. Dazu werden Standort-Tags verwendet.)

Wenn also (Speicherparaphrase) "Änderungen an MACHINE/WEBROOT/APPHOST" angegeben wäre, würde dies die oberste Ebene der Hierarchie IIS) bedeuten.

Wenn "MACHINE/WEBROOT/APPHOST/Dodgy Web Site" angegeben ist, bedeutet dies, dass der physische Pfad hinter Dodgy Web Site nachgeschlagen und an diesem Speicherort eine web.config-Datei geschrieben (oder aktualisiert) wurde.

5
TristanK

Wenn Sie IISExpress und Visual Studio 2015 verwenden, wird applicationHost.config In $(solutionDir).vs\config\applicationhost.config gespeichert (dank Nime Clouds Antwort ).

Ändern Sie einfach overrideModeDefault="Allow" Wo immer dies angebracht ist.

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

Versuchen Sie es in Ihrem Anwendungspool. 32-Bit-Anwendungsunterstützung deaktivieren IIS Manager -> Anwendungspools -> Wählen Sie [Ihr AppPool] -> Erweiterte Einstellungen -> 32-Bit-Anwendungen aktivieren - ändern Sie ihn in ' Falsch'

1
JohnR