IIS kilitli bir bölümden şikayet ediyor - nerede kilitli olduğunu nasıl öğrenebilirim?


54

Bu bölümü web.config dosyasında bulabilirsiniz:

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

IIS7 çöküyor ve yetkilendirme bölümünden şikayetçi:

Modül AnonymousAuthenticationModule
Bildirim AuthenticateRequest
İşleyicisi StaticFile
Hata Kodu 0x80070021
Yapılandırma Hatası Bu yapılandırma bölümü bu yolda kullanılamaz. Bu, bölüm ebeveyn seviyesinde kilitlendiğinde gerçekleşir. Kilitleme varsayılan olarakdır (overrideModeDefault = "Deny") veya overrideMode = "Deny" veya legacy allowOverride = "false" olan bir konum etiketi tarafından açıkça ayarlanmış.

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

Yani bunu çözmenin normal yolu %windir%\system32\inetsrv\config\applicationHost.config, bölüme girmek ve bölümün kilidini açmaktır:

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

(alternatif olarak appcmd unlock config).

Tuhaf olan şey: Bunu yaptım ve hala şikayet ediyor.

Konumları aradım (MVC, kullandığım tüm sitelerin kökü olan web sitemin adıdır):

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

Hala havaya uçtu. Bunun neden olduğu konusunda şaşkınım. Bunu web.config dosyasından çıkaramıyorum, kök problemini bulmak istiyorum.

IIS'den hangi kuralın sonunda beni reddettiği konusunda belirli bir bilgi edinmenin bir yolu var mı?

Düzenleme: Bunu, kök dizime (makinem) gidip "Yapılandırmayı Düzenle" yi tıklatarak ve oradaki bölümün kilidini açarak IIS7 yönetim konsolunu kullanarak çözebildim. Hala değiştirdiği dosyayı bulamadığım için daha iyi bir yol olup olmadığını bilmek istiyorum.


Bellekten, normal olarak
500.19'da

Yanıtlar:


78

Bu sorunu benim için çözen bu adımları çözdüm:

  1. IIS Yöneticisi'ni açın
  2. Soldaki ağaçtaki sunucu adını tıklayın
  3. Sağ bölme, Yönetim bölümü, Yapılandırma Düzenleyicisi'ne çift tıklayın
  4. En üstteki bölümü seçin system.webServer/security/authentication/anonymousAuthentication
  5. Sağ bölmede, Bölüm Kilidini Aç'ı tıklayın.
  6. En üstteki bölümü seçin system.webServer/security/authentication/windowsAuthentication
  7. Sağ bölmede, Bölüm Kilidini Aç'ı tıklayın.

1
Bunun bir PowerShell eşdeğeri var mı? Bunu yazabilmek istiyorum.
Pete Stensønes

Bir tane bulursanız, göndermek için çekinmeyin :)
18'de tomfanning

Yapacağım, başkasının nasıl olduğunu bildiğini umuyordum.
Pete Stensønes

1
@ PeteStensønes O var! >%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/authentication/windowsAuthentication
joacar

14

Bu, Windows Server 2012, IIS 8.5'teki hatayı çözdü. Diğer sürümler için de çalışmalı.

  1. Git Sunucu Yöneticisi eklemek tıklayın Rolleri ve Özellikleri
  2. Roller bölümünde şunları seçin: Web Sunucusu
  3. Güvenlik alt bölümü altında her şeyi seçin (kullanımı kullanmadığımız için özet, IP kısıtlamaları ve URL yetkilendirmelerini hariç tuttum)
  4. Altında Uygulama Geliştirme seçmek .NET Extensibility 4.5ve ASP>NET 4.5her iki ISAPI girdileri
  5. Gelen Özellikler bölümünde seç: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. Gelen Web sunucusu bölümüne seç: Web Server (all), Management Tools (IIS Management Console and Management Service),Windows

5

Yapılandırma kilitlemesi şu şekilde olabilir:

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

  2. Site Web.config dosyası (MACHINE / WEBROOT / APPHOST / Web Sitesi Adı)

  3. Herhangi bir App web.config dosyası olan (MAKİNE / WEBROOT / APPHOST / Site Adı / Uygulama Adı)

Bir bölümü kilitlemek (bölüm: IIS yapılandırma bölümü, örneğin <asp>) , bu ayarları hiyerarşideki herkesten daha düşük bir seviyedeki herkese yapılandırma yeteneğini reddetmenizi sağlar.

GUI’nin Özellik Delegasyonu’nın kullanılması yanlış değildir ve AppCMD’nin yaptıklarına çok benzer bir şey yapar <location>.

APPCMD dosyaların kilidini açmak için kullanılabilir, ancak nerede yaptığını söylediği yere dikkat edin - bu konuda GUI kadar akıllı değildir.

Ekleme -commit:apphostsenin sonuna APPCMD UNLOCKolduğunu komut hedefleri applicationhost.config, IIS işlem için anahtar dosyası (; depolar tüm merkezi ayarları ancak bunu yaparsanız web.config dosyalarında) (geçersiz kılmaları verir önceki sürümlerden metabase'i yerine geçer).

-Commit: apphost, APPCMD, ister web sitesi ister uygulama düzeyinde olsun, web.config dosyası için en yakın mantıksal noktayı hedefler ve yukarıdaki set gibi bir yapılandırma dizesi kullanarak ayarının değiştirildiğini gösterir. (Bir kenara: hala alt web sitelerindeki ayarları hedefleyebilirsiniz, ancak apphost'a karar verin - bunu başarmak için konum etiketlerini kullanır)

Bu yüzden eğer (bellek parolası) "MACHINE / WEBROOT / APPHOST 'a bağlı değişiklikler" demişse, bu IIS hiyerarşisinin en üst seviyesi anlamına gelir.

"MACHINE / WEBROOT / APPHOST / Dodgy Web Sitesine Bağlı" yazıyorsa, bu, Dodgy Web Sitesinin arkasındaki fiziksel yola baktığını ve o yere bir web.config dosyası yazdığını (veya güncellediğini) anlamına gelir.


3

IISExpress ve Visual Studio 2015 kullanıyorsanız, applicationHost.configiçinde saklanır $(solutionDir).vs\config\applicationhost.config(Nime Cloud'un cevabı sayesinde ).

Sadece overrideModeDefault="Allow"uygun olanı değiştirin .

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

1

Uygulama Havuzunuzda deneyin, 32 bit uygulamaları devre dışı bırakın IIS Yöneticisi -> Uygulama Havuzları -> [Sizin Uygulama Kutunuz] -> Gelişmiş Ayarlar -> 32 Bit Uygulamalarını Etkinleştir - 'Yanlış' olarak değiştirin


-2

IIS'ye bir göz atın - bu yapılandırma bölümü bu yolda kullanılamaz (yapılandırma kilidi?)

Kabul edilen cevap Windows 10'da benim için mükemmel çalıştı, aşağıdakileri yapmasını söyler:

  • "Başlat" düğmesini tıklayın
  • arama kutusuna "Windows özelliklerini aç veya kapat" yazın.
  • özellikler penceresinde, tıklayın: "İnternet Bilgi Servisleri"
  • Tıklayın: "World Wide Web Services"
  • Tıklayın: "Uygulama Geliştirme Özellikleri"
  • Özellikleri kontrol et (etkinleştir). CGI hariç hepsini kontrol ettim.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.