У меня есть этот раздел в моем web.config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
IIS7 падает и жалуется на раздел аутентификации:
Модуль AnonymousAuthenticationModule
Notification AuthenticateRequest
Обработчик StaticFile
Error Code 0x80070021
Ошибка конфигурации Этот раздел конфигурации не может использоваться по этому пути. Это происходит, когда раздел заблокирован на родительском уровне. Блокировка либо по умолчанию (overrideModeDefault = "Deny"), либо устанавливается явно с помощью тега местоположения с помощью overrideMode = "Deny" или устаревшего allowOverride = "false".
Config Source
69: <authentication>
70: <anonymousAuthentication enabled="true" />
Таким образом, обычный способ решить эту проблему - перейти в %windir%\system32\inetsrv\config\applicationHost.config
раздел и разблокировать его:
<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>
(альтернативно appcmd unlock config
).
Странная вещь: я сделал это, и он все еще жалуется.
Я искал Locations (MVC - это название моего сайта, которое является корнем всех сайтов, которые я использую):
<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>
Все еще это взрывается. Я озадачен тем, почему это происходит. Я не могу удалить его из web.config, я хочу найти проблему root.
Есть ли способ получить конкретную информацию от IIS, какое правило в конечном итоге мне отказывает?
Изменить: я смог исправить это с помощью консоли управления IIS7, перейдя в самый корень (мой компьютер) и нажав «Изменить конфигурацию» и разблокировав там раздел. Тем не менее, я хотел бы знать, есть ли лучший способ, так как я не могу найти файл, который он на самом деле изменяет.
источник
Ответы:
Разработал эти шаги, которые решают проблему для меня:
system.webServer/security/authentication/anonymousAuthentication
system.webServer/security/authentication/windowsAuthentication
источник
>%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/authentication/windowsAuthentication
Это решило мою ошибку на Windows Server 2012, IIS 8.5. Должно работать и для других версий.
.NET Extensibility 4.5
иASP>NET 4.5
обе записи ISAPI.NET 3.5
,.NET 4.5
,ASP.NET 4.5
Web Server (all)
,Management Tools (IIS Management Console and Management Service)
,Windows
источник
Блокировка конфигурации может происходить при:
Applicationhost.config (строка конфигурации: MACHINE / WEBROOT / APPHOST)
файл Web.config сайта (MACHINE / WEBROOT / APPHOST / Имя веб-сайта)
Любой файл web.config приложения, который (MACHINE / WEBROOT / APPHOST / Имя сайта / Имя приложения)
Блокировка раздела (например, раздел «Конфигурация IIS»
<asp>
) позволяет запретить настройку этих параметров кому-либо на более низком уровне иерархии, чем вы.Использование функции делегирования графического интерфейса не является неправильным и делает то же самое, что и AppCMD, под обложками - устанавливает OverrideMode для данного раздела в
<location>
теге на любом уровне конфигурации, на котором вы сосредоточены.APPCMD можно использовать для разблокировки файлов, но обратите внимание на то, где говорится, что он это делает - он не такой умный, как GUI по этому поводу.
Добавление
-commit:apphost
к концу вашейAPPCMD UNLOCK
команды целей Applicationhost.config, что является ключевым файлом для работы IIS (заменяет метабазу от более ранних версий, хранит все централизованные настройки , но позволяет переопределение (если вы делаете) в файлах web.config).Без -commit: apphost APPCMD нацелится на ближайшее логическое место для файла web.config - будь то на уровне сайта или приложения и укажет, что он изменил настройку, используя строку конфигурации, подобную вышеприведенному набору. (Кроме того: вы все еще можете настроить таргетинг только на настройки на дополнительных веб-сайтах, но зафиксировать для apphost - для этого используются теги местоположения)
Так что если бы он сказал (перефразируя память) «Изменения, внесенные в MACHINE / WEBROOT / APPHOST», это означало бы верхний уровень иерархии IIS.
Если он говорит «совершено на MACHINE / WEBROOT / APPHOST / Dodgy Web Site», это будет означать, что он посмотрел физический путь за Dodgy Web Site и написал файл web.config (или обновил его) в этом месте.
источник
Если вы используете IISExpress и Visual Studio 2015, они
applicationHost.config
хранятся в$(solutionDir).vs\config\applicationhost.config
(благодаря ответу Nime Cloud ).Просто измените,
overrideModeDefault="Allow"
где это уместно.источник
Попробуйте в пуле Applicaiton отключить поддержку IIS Manager для 32-разрядных приложений -> Пулы приложений -> выберите [Ваш AppPool] -> Расширенные настройки -> Включить 32-разрядные приложения - измените значение на «False»
источник
Взгляните на IIS - этот раздел конфигурации нельзя использовать по этому пути (блокировка конфигурации?)
Принятый ответ отлично сработал для меня в Windows 10, он дает указания сделать следующее:
источник