Vraag IIS klaagt over een geblokkeerd gedeelte - hoe kom ik erachter waar het is vergrendeld?


Ik heb deze sectie in mijn web.config:

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

IIS7 crasht en beklaagt zich over het gedeelte voor autenticatie:

Module AnonymousAuthenticationModule
     Notification AuthenticateRequest
     Handler StaticFile
     Foutcode 0x80070021
     Config Error Deze configuratiesectie kan niet worden gebruikt op dit pad. Dit gebeurt wanneer de sectie op bovenliggend niveau wordt vergrendeld. Vergrendeling is standaard (overrideModeDefault = "Weigeren"), of expliciet ingesteld door een locatietag met overrideMode = "Weigeren" of de oude allowOverride = "false".

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

Dus de gebruikelijke manier om dit op te lossen, is door naar binnen te gaan %windir%\system32\inetsrv\config\applicationHost.config en ontgrendel de sectie:

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

(alternatief, appcmd unlock config).

Het rare: dat heb ik gedaan en het klaagt nog steeds.

Ik zocht naar locaties (MVC is de naam van mijn website die de wortel is van alle sites die ik gebruik):

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

Toch blaast het op. Ik ben verbaasd waarom dit gebeurt. Ik kan het niet van web.config verwijderen, ik wil het rootprobleem vinden.

Is er een manier om specifieke informatie van IIS te krijgen, welke regel ontkent mij uiteindelijk?

Bewerk: Ik kon dit herstellen met behulp van de IIS7-beheerconsole door naar de root (mijn machine) te gaan en op "Configuratie bewerken" te klikken en de sectie daar te ontgrendelen. Toch zou ik graag willen weten of er een betere manier is, omdat ik het bestand dat het daadwerkelijk modificeert niet kan vinden.


44
2018-02-15 16:48


oorsprong


Vanuit het geheugen is er gewoonlijk een sectie in de 500.19 die aangeeft welk bestand op welke locatie aan de orde is, onderaan (denk ik) - TristanK
Dit is heel goed beantwoord meer dan ZO - paqogomez


antwoorden:


Werkte deze stappen uit die het probleem voor mij oplossen:

  1. Open IIS Manager
  2. Klik op de servernaam in de structuur aan de linkerkant
  3. Rechterpaneel, Managementsectie, dubbelklik op Configuratie-editor
  4. Kies bovenaan het gedeelte system.webServer/security/authentication/anonymousAuthentication
  5. Klik in het rechterdeelvenster op Sectie ontgrendelen
  6. Kies bovenaan het gedeelte system.webServer/security/authentication/windowsAuthentication
  7. Klik in het rechterdeelvenster op Sectie ontgrendelen

68
2018-06-19 11:40



Heeft dit een PowerShell-equivalent? Ik zou dit graag willen kunnen schrijven. - Pete Stensønes
Als je er een aantreft, voel je vrij om het te plaatsen :) - tomfanning
Ik zal, ik hoopte dat iemand anders al wist hoe. - Pete Stensønes


Dit loste mijn fout op Windows Server 2012, IIS 8.5. Zou ook voor andere versies moeten werken.

  1. Ga naar Server Manager, klik op toevoegen Rollen en functies
  2. Kies in de rollen sectie: Web Server
  3. Onder Veiligheid subsectie kies alles (ik heb digest, IP-beperkingen en URL-autorisatie uitgesloten omdat we ze niet gebruiken)
  4. Onder Applicatie ontwikkeling Kiezen .NET Extensibility 4.5 en ASP>NET 4.5, beide ISAPI-ingangen
  5. In de Kenmerken sectie kiezen: NET 3.5, .NET 4.5, ASP.NET 4.5
  6. In de web Server sectie kiezen: Web Server (all), Management Tools (IIS Management Console and Management Service), Windows 

10
2018-04-25 13:41





Het vergrendelen van de configuratie kan plaatsvinden op:

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

  2. een Site Web.config-bestand (MACHINE / WEBROOT / APPHOST / Websiternaam)

  3. Elk app-web.config-bestand dat (MACHINE / WEBROOT / APPHOST / Site Name / App Name)

Een sectie vergrendelen (gedeelte: IIS-configuratiesectie, bijv <asp>) kunt u de mogelijkheid ontkennen om die instellingen te configureren voor iedereen op een lager niveau in de hiërarchie dan u.

De functie-Delegatie van de GUI gebruiken is niet verkeerd, en doet een beetje hetzelfde als wat AppCMD doet, onder de omslagen - sets OverrideMode voor een bepaalde sectie in een <location> label op elk niveau van config waarop je gefocust bent.

APPCMD kan worden gebruikt om bestanden te ontgrendelen, maar let op waar het zegt dat het het doet - het is niet zo slim als de GUI hieromtrent.

Het toevoegen -commit:apphost tot het einde van je APPCMD UNLOCK opdrachtdoelen Applicationhost.config, wat is de sleutelbestand voor IIS-bewerking (vervangt de metabase van eerdere versies; slaat alle gecentraliseerde instellingen op maar laat overschrijvingen toe (als u dat wel doet) in web.config-bestanden).

Zonder -commit: apphost, APPCMD zal de dichtstbijzijnde logische plek voor een web.config-bestand targeten - of dit nu op het site- of app-niveau is en geeft aan dat het de instelling heeft gewijzigd met een configuratie-string zoals de bovenstaande set. (Terzijde: je kunt nog steeds alleen de instellingen in subwebsites targeten, maar commit naar apphost - het gebruikt locatietags om dat te bereiken)

Dus als er wordt gezegd (geheugenparafrase) "Veranderingen die zijn vastgelegd in MACHINE / WEBROOT / APPHOST", zou dat het hoogste niveau van de IIS-hiërarchie betekenen.

Als er staat "toegewijd aan MACHINE / WEBROOT / APPHOST / Dodgy-website", zou dat betekenen dat het het fysieke pad achter de Dodgy-website opzocht en een web.config-bestand op die locatie schreef (of bijwerkt).


4
2018-02-15 21:11





Als u IISExpress en Visual Studio 2015 gebruikt, is de applicationHost.config is opgeslagen in $(solutionDir).vs\config\applicationhost.config (bedankt aan Nime Cloud's antwoord).

Verander gewoon overrideModeDefault="Allow" waar nodig.

<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





Probeer in uw Applicaiton-pool de ondersteuning voor 32-bits toepassingen uit te schakelen IIS Manager -> Toepassingsgroepen -> selecteer [Uw AppPool] -> Geavanceerde instellingen -> 32-bits toepassingen inschakelen - wijzig dit in 'False'


0
2017-12-10 19:40





Kijk eens naar IIS - deze configuratiesectie kan niet worden gebruikt op dit pad (configuratie vergrendeling?)

Het geaccepteerde antwoord werkte perfect voor mij in Windows 10, het geeft de opdracht om het volgende te doen:

  • Klik op de knop "Starten"
  • in het zoekvak, voer "Windows-functies in- of uitschakelen" in
  • in het eigenschappenvenster, klik: "Internet Information Services"
  • Klik: "World Wide Web Services"
  • Klik: "Applicatie-ontwikkelingsfuncties"
  • Controleer (activeer) de functies. Ik controleerde alles behalve CGI.

-2
2018-06-30 17:13