Mam tę sekcję w moim pliku web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
IIS7 ulega awarii i skarży się na sekcję uwierzytelniania:
Moduł AnonymousAuthenticationModule
Notification AuthenticateRequest
Handler
Kod błędu pliku statycznego 0x80070021
Błąd konfiguracji W tej ścieżce nie można użyć tej sekcji konfiguracji. Dzieje się tak, gdy sekcja jest zablokowana na poziomie nadrzędnym. Blokowanie jest albo domyślnie (overrideModeDefault = „Odmów”), albo jawnie ustawione przez tag lokalizacji z overrideMode = „Odmów” lub starsze zezwalanieOverride = „false”.
Config Source
69: <authentication>
70: <anonymousAuthentication enabled="true" />
Tak więc zwykłym sposobem rozwiązania tego jest wejście %windir%\system32\inetsrv\config\applicationHost.config
i odblokowanie sekcji:
<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>
(alternatywnie appcmd unlock config
).
Dziwna rzecz: zrobiłem to i wciąż narzeka.
Szukałem lokalizacji (MVC to nazwa mojej witryny, która jest głównym źródłem wszystkich witryn, z których korzystam):
<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>
Nadal się wysadza. Zastanawiam się, dlaczego tak się dzieje. Nie mogę go usunąć z pliku web.config, chcę znaleźć problem root.
Czy istnieje sposób na uzyskanie określonych informacji z IIS, która reguła ostatecznie mnie odmawia?
Edycja: Udało mi się to naprawić za pomocą konsoli zarządzania IIS7, przechodząc do samego katalogu głównego (mojej maszyny) i klikając „Edytuj konfigurację” i odblokowując tam sekcję. Nadal chciałbym wiedzieć, czy istnieje lepszy sposób, ponieważ nie mogę znaleźć pliku, który faktycznie modyfikuje.
źródło
Odpowiedzi:
Opracowałem następujące kroki, które rozwiązują problem:
system.webServer/security/authentication/anonymousAuthentication
system.webServer/security/authentication/windowsAuthentication
źródło
>%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/authentication/windowsAuthentication
To rozwiązało mój błąd w systemie Windows Server 2012, IIS 8.5. Powinien działać również w przypadku innych wersji.
.NET Extensibility 4.5
iASP>NET 4.5
oba wpisy ISAPINET 3.5
,.NET 4.5
,ASP.NET 4.5
Web Server (all)
,Management Tools (IIS Management Console and Management Service)
,Windows
źródło
Blokowanie konfiguracji może nastąpić pod:
Applicationhost.config (ciąg konfiguracji: MACHINE / WEBROOT / APPHOST)
plik Web.config witryny (MACHINE / WEBROOT / APPHOST / Web Site Name)
Dowolny plik web.config aplikacji, który (MACHINE / WEBROOT / APPHOST / Site Name / App Name)
Zablokowanie sekcji (sekcja: sekcja konfiguracji IIS, np.
<asp>
) Pozwala odmówić skonfigurowania tych ustawień każdemu na niższym poziomie w hierarchii niż ty.Korzystanie z funkcji delegowania funkcji GUI nie jest złe i robi bardzo podobne do tego, co robi AppCMD, pod osłonami - ustawia OverrideMode dla danej sekcji w
<location>
znaczniku na dowolnym poziomie konfiguracji, na którym się koncentrujesz.APPCMD może być używany do odblokowywania plików, ale zwróć uwagę na to, gdzie mówi, że to robi - nie jest tak inteligentny jak GUI w tym zakresie.
Dodanie
-commit:apphost
do końca swoichAPPCMD UNLOCK
celów dowodzenia ApplicationHost.config, co jest plik klucza do pracy IIS (zastępuje metabazę z wcześniejszymi wersjami; przechowuje wszystkie ustawienia scentralizowane ale pozwala przesłonięcia (jeśli nie) w plikach web.config).Bez -commit: apphost, APPCMD będzie celować w najbliższe miejsce logiczne dla pliku web.config - czy to na poziomie witryny, czy aplikacji, i wskaże, że zmieniło to ustawienie za pomocą ciągu konfiguracyjnego takiego jak powyższy zestaw. (Poza tym: nadal możesz kierować reklamy tylko na ustawienia w podstronach, ale zatwierdzić apphost - do tego celu używa tagów lokalizacji)
Więc jeśli powie (parafraza pamięci) „Zmiany wprowadzone w MACHINE / WEBROOT / APPHOST”, oznaczałoby to najwyższy poziom hierarchii IIS.
Jeśli napisane jest „zaangażowany w MACHINE / WEBROOT / APPHOST / Dodgy Web Site”, oznaczałoby to, że przejrzał fizyczną ścieżkę za Dodgy Web Site i napisał plik web.config (lub zaktualizował go) w tej lokalizacji.
źródło
Jeśli używasz IISExpress i Visual Studio 2015 roku
applicationHost.config
jest przechowywany w$(solutionDir).vs\config\applicationhost.config
(dzięki nime cloud odpowiedzi ).Po prostu zmień,
overrideModeDefault="Allow"
gdziekolwiek jest to właściwe.źródło
Wypróbuj w swojej puli aplikacji, wyłącz obsługę 32-bitowych aplikacji Menedżer IIS -> Pule aplikacji -> wybierz [Twoja AppPool] -> Ustawienia zaawansowane -> Włącz aplikacje 32-bitowe - zmień na „Fałsz”
źródło
Spójrz na IIS - tej sekcji konfiguracji nie można użyć na tej ścieżce (blokowanie konfiguracji?)
Przyjęta odpowiedź działała idealnie dla mnie w systemie Windows 10, nakazuje wykonać następujące czynności:
źródło