Ошибка конфигурации: этот раздел конфигурации не может использоваться по этому пути
Я столкнулся с ошибкой при развертывании сайта на сервере. При попытке загрузить домашнюю страницу или получить доступ к аутентификации на новом сайте в IIS, я получаю сообщение об ошибке:
Ошибка конфигурации: этот раздел конфигурации нельзя использовать по этому пути. Это происходит, когда раздел заблокирован на родительском уровне. Блокировка либо по умолчанию (overrideModeDefault="Deny"), либо устанавливается явно с помощью тега местоположения с помощью overrideMode="Deny" или устаревшего allowOverride="false".
Более подробно можно найти здесь, в Сценарии 7 соответствует мой шестнадцатеричный код ошибки.
Решение, приведенное на связанном сайте выше, состоит в том, чтобы установить Allow для overrideModeDefault в разделе, упомянутом в моей ошибке, в файле applicationHost.config. В моем случае в разделе Безопасность в system.webServer. Но если я посмотрю на applicationHost.config на моем локальном компьютере, где сайт уже правильно развернут, для этого раздела будет установлено значение " Запретить".
Если это решение верное, как нормально работает мой локальный экземпляр с тем же web.config? Согласно моему applicationHost.config, этот раздел должен быть заблокирован, но это не так. Я бы предпочел не изменять файл applicationHost.config, потому что на этом сервере запущено много других сайтов. Есть ли другое решение?
36 ответов
У меня такая же проблема. Не помню, где я нашел это в Интернете, но вот что я сделал:
- Нажмите кнопку "Пуск"
- в поле поиска введите "Включить или отключить функции Windows"
- в окне функций нажмите: "Информационные службы Интернета"
- Нажмите: "World Wide Web Services"
- Нажмите: "Особенности разработки приложений"
- Проверьте (включите) функции. Я проверил все, кроме CGI.
Кстати, я использую Windows 7.
Вы также можете использовать диспетчер IIS для редактирования этих настроек.
Уход за этой статьей Learn IIS:
Использование функции делегирования из корня IIS:
Затем вы можете контролировать каждое из прав на чтение / запись на уровне компьютера, что в противном случае даст вам ошибки overrideMode="Deny".
Для Windows Server 2012 и IIS 8 процедура аналогична.
Web Server (IIS)
а также Application Server
должен быть установлен, и вы также должны иметь Web Server (IIS) Support
под Application Server
,
Перейдите в "C:\Windows\System32\inetsrv\config" (здесь вам потребуются права администратора). Откройте applicationHost.config.
Примечание. В IISExpress и Visual Studio 2015 applicationHost.config хранится в $(solutionDir).vs\config\applicationhost.config
Найдите раздел, который появился в части "config source" на странице сообщения об ошибке. Для меня это обычно были "модули" или "обработчики"
Изменить overrideModeDefault
атрибут быть Allow
Теперь вся строка выглядит так:
<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
После сохранения файла страница прекрасно загрузилась в моем браузере.
Предупреждение: редактирование applicationHost.config в 64-битной Windows
Для Win 10 (вероятно, будет работать и на других версиях Windows.)
1. Откройте "Включить или отключить функции Windows" с помощью: WinKey+ R => "факультативные функции" => ОК
- Включите эти функции в разделе "Функции разработки приложений"
Вам нужно разблокировать обработчики. Это можно сделать с помощью следующей команды cmd:
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers
Может быть, другая информация для людей, которые получают эту ошибку на IIS 8, в моем случае была на платформе Microsoft Server 2012. Я потратил пару часов на борьбу с другими ошибками, которые появлялись после выполнения appcmd. В конце концов я смог это исправить, удалив роль веб-сервера и установив ее снова.
Мне нужно было запустить эти две команды из командной строки с повышенными правами:
%windir%/system32/inetsrv/appcmd unlock config /section:anonymousAuthentication
%windir%/system32/inetsrv/appcmd unlock config -section:windowsAuthentication
Согласно моему ответу на этот подобный вопрос;
Попробуйте разблокировать соответствующие параметры конфигурации IIS на уровне сервера следующим образом:
- Открыть IIS Manager
- Выберите сервер на панели соединений
- Откройте редактор конфигурации на главной панели
- В раскрывающемся списке "Разделы" выберите раздел, который нужно разблокировать, например, system.webServer > defaultPath
- Нажмите Разблокировать атрибут в правой панели
- Повторите для любых других настроек, которые вам нужно разблокировать
- Перезапустить IIS (необязательно). Выберите сервер на панели Conncetions и нажмите "Перезагрузить" на панели действий.
Это помогло мне, для IIS 8 Windows Server 2012 R2
Перейти к "Включить функции"
Затем перейдите ко всем настройкам по умолчанию, Далее, Далее, Далее и т. Д.
Затем выберите, как показано ниже,
Затем перезагрузите IIS (необязательно), но сделайте это более безопасной стороной.
Это дополнительное решение, так как его общая проблема, у всех разные проблемы и, следовательно, разные решения. Ура!
В Windows Server 2012 с IIS 8 я решил эту проблему, включив функцию ASP.NET 4.5:
и затем следуя ответу Кена.
Чтобы это исправить, откройте приложение IIS Express applicationhost.config. Этот файл хранится в C:\Users[ваше имя пользователя]\Documents\IISExpress\config\applicationhost.config
Обновление для VS2015+: расположение файла конфигурации: $(solutionDir).vs\config\applicationhost.config
Ищите следующие строки
<section name="windowsAuthentication" overrideModeDefault="Deny" />
<section name="anonymousAuthentication" overrideModeDefault="Deny" />
<add name="WindowsAuthenticationModule" lockItem="true" />
<add name="AnonymousAuthenticationModule" lockItem="true" />
Измените эти строки на
<section name="windowsAuthentication" overrideModeDefault="Allow" />
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<add name="WindowsAuthenticationModule" lockItem="false" />
<add name="AnonymousAuthenticationModule" lockItem="false" />
Сохраните его и обновите страницу Asp.net.
В нашем случае на IIS 8 мы обнаружили ошибку, возникшую при попытке просмотра "Проверка подлинности" для сайта, когда:
- Делегирование функций сервера, помеченное как "Аутентификация - Windows" = "Только чтение"
- На сайте был файл web.config, который явно ссылался на проверку подлинности Windows; например,
Отмечая на сайте функцию делегирования "Аутентификация - Windows" = "Чтение / запись", ошибка исчезла. Похоже, что с функцией, помеченной как "Только чтение", web.config вообще не имеет права ссылаться на него, даже чтобы отключить его, так как это, по-видимому, составляет запись.
Похоже, что в IIS Express и VS 2015 есть копия файла applicationHost.config по адресу $(solutionDir).vs\config\applicationhost.config, поэтому вам нужно будет внести в него изменения. Смотрите эту ссылку: http://digitaldrummerj.me/iis-express-windows-authentication/
Убедитесь, что эти строки изменены согласно ниже:
<section name="windowsAuthentication" overrideModeDefault="Allow" />
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<add name="WindowsAuthenticationModule" lockItem="false" />
<add name="AnonymousAuthenticationModule" lockItem="false" />
В моем случае это было то, что на сервере не была включена "Активация HTTP" под.NET Framework Features. Итак, для Windows Server 2012 решение, которое работало для меня, было:
Диспетчер серверов -> Добавление ролей и функций -> Функции -> убедитесь, что в.NET Framework версии, которую вы хотите использовать, установлен флажок "Активация HTTP"
Я заметил один похожий ответ, но в моем случае я использовал IIS Configured Editor, чтобы найти раздел, который я хотел "разблокировать".
Затем я скопировал путь и использовал его в своей автоматизации, чтобы разблокировать его перед изменением разделов, которые я хотел редактировать.
. "$($env:windir)\system32\inetsrv\appcmd" unlock config -section:system.webServer/security/authentication/windowsAuthentication
. "$($env:windir)\system32\inetsrv\appcmd" unlock config -section:system.webServer/security/authentication/anonymousAuthentication
Способ включения функций Powershell (Windows Server 2012 +) - при необходимости:
Install-WindowsFeature NET-Framework-Core
Install-WindowsFeature Web-Server -IncludeAllSubFeature
Install-WindowsFeature NET-Framework-Features -IncludeAllSubFeature
Install-WindowsFeature NET-Framework-45-ASPNET -IncludeAllSubFeature
Install-WindowsFeature Application-Server -IncludeAllSubFeature
Install-WindowsFeature MSMQ -IncludeAllSubFeature
Install-WindowsFeature WAS -IncludeAllSubFeature
Ошибка говорит о том, что раздел конфигурации заблокирован на родительском уровне. Таким образом, это не будет непосредственно 1 файл конфигурации, который решит проблему, нам нужно пройти иерархию файлов конфигурации, чтобы увидеть наследование. Проверьте ссылку ниже, чтобы пройти иерархию файлов и наследование в IIS.
https://msdn.microsoft.com/en-us/library/ms178685.aspx
Так что вам нужно проверить настройки приложения в следующем порядке
- ApplicationHost.config в C:windows\system32\inetsrv\config. Измените атрибут overrideModeDefault на Разрешить.
- ApplicationName.config или web.config в каталоге приложений
- Web.config в корневом каталоге.
- Web.config на определенном веб-сайте (моя проблема была найдена в этом месте).
- Web.config корневой сети (конфигурация сервера)
- machine.config машины (web.config Root и machine.config можно найти по адресу - systemroot\MicrosoftNET\Framework\versionNumber\CONFIG\Machine.config)
Внимательно просмотрите все эти конфиги в порядке от 1 до 6, и вы должны их найти.
Мне нужно было изменить настройки SSL в подпапке, когда я получил это приятное сообщение. В моем случае мне помогли следующие действия.
Открыт C:\Windows\System32\inetsrv\config\applicationHost.config
И изменил значение с overrideModeDefault="Запретить" на "Разрешить"
<sectionGroup name="system.webServer">
...
<sectionGroup name="security">
<section name="access" overrideModeDefault="Allow" />
</sectionGroup>
В моем случае я получил эту ошибку, потому что я работал с неправильным файлом конфигурации.
Я делал это:
Configuration config = serverManager.GetWebConfiguration(websiteName);
ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime");
serverRuntimeSection["alternateHostName"] = hostname;
вместо правильного кода:
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection serverRuntimeSection = configApp.GetSection("system.webServer/serverRuntime", websiteName);
serverRuntimeSection["alternateHostName"] = hostname;
другими словами, я пытался работать с web.config веб-сайта вместо глобального файла C:\Windows\System32\inetsrv\config\applicationHost.config, в котором есть раздел (или может быть раздел) для веб-сайта. Параметр, который я пытался изменить, существует только в файле applicationHost.config.
В моем случае это было что-то еще.
Когда я загрузил решение в новой версии Visual Studio, VS, очевидно, создал новый файл applicationhost.config для конкретного проекта:
MySolutionDir \.vs \ Config \ ApplicationHost.config
Он начал использовать настройки из нового конфига вместо моих уже настроенных глобальных настроек IIS Express. (\Users\%USER%\Documents\IISExpress\ Config \ applicationHost.config)
В моем случае это была настройка, которую нужно было установить. Конечно, это может быть что-то для вас:
<section name="ipSecurity" overrideModeDefault="Allow" />
У меня была аналогичная проблема, но я использовал следующий сценарий PowerShell, который помог мне выполнить указанные выше действия при нажатии кнопки.
#Install IIS
Import-Module ServerManager
Add-WindowsFeature Web-Server, Web-Asp-Net45, Web-Mgmt-Console, Web-Scripting-Tools, NET-WCF-HTTP-Activation45, Web-Windows-Auth
список функций может быть добавлен или удален в зависимости от требований.
Получил эту же проблему после установки IIS 7 на Vista Home Premium. Чтобы исправить ошибку, я изменил следующие значения, расположенные в файле applicationHost.config, расположенном в Windows\system32\inetsrv.
Измените все следующие значения, расположенные в разделе ->
<div mce_keep="true"><section name="handlers" overrideModeDefault="Deny" /> change this value from "Deny" to "Allow"</div>
<div mce_keep="true"><section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> change this value from "Deny" to "Allow"</div>
Можете ли вы попробовать это:
Перейдите к пути приложения, где вы получаете сообщение об ошибке, щелкните правой кнопкой мыши
Свойства-> вкладка Безопасность
В этом, измените разрешения и установите флажок для чтения и записи. Тогда он будет работать без каких-либо ошибок.
Для Windows Server 2008 и IIS 7 процедура аналогична. пожалуйста, обратитесь к этому: http://msdn.microsoft.com/en-us/library/vstudio/bb763178%28v=vs.100%29.aspx
в службе добавления ролей вы увидите "Функции разработки приложений"
Проверьте (включите) функции. Я проверил все.
Норвежский Google Ref:
Denne konfigurasjonsdelen kan ikke brukes i denne banen. Dette skjer når delen er låst på et overordnet nivå. Потеря стандартного уровня (overrideModeDefault="Запретить") eller angis eksplisitt av en stedskode med overrideMode="Запретить" eller den eldre allowOverride="false".
Включение всех вариантов разработки приложений исправило это для меня. Мне, вероятно, не нужно все, но теперь это работает.
В моем случае я получал эту ошибку при попытке обновить параметры проверки подлинности в IIS, в дополнение к просмотру. Мне удалось устранить эту ошибку, удалив параметр аутентификации из самого файла web.config. Удаление проблемного раздела конфигурации может быть менее инвазивным и предпочтительным в некоторых случаях, чем чрезмерное изменение ролей и функций сервера:
Раздел удален:
<security>
<authentication>
<windowsAuthentication enabled="true" />
</authentication>
</security>
У меня такая же проблема. Я удалил этот раздел из файла web.config.
<modules>
<remove name="WebDAVModule" />
</modules>
У меня была проблема, когда я вставлял значения переопределения = "Разрешить" (уже упоминалось здесь)...... но в 64-битной системе....... Мой 32-й блокнот ++ их фантомно сохранял. Переключение на Блокнот (это 64-битное приложение на 64-битной операционной системе) позволило мне сохранить настройки.
Увидеть:
http://dpotter.net/technical/2009/11/editing-applicationhostconfig-on-64-bit-windows/
Соответствующий текст:
Одна из проблем, с которыми я столкнулся, требовала, чтобы я просмотрел и, возможно, отредактировал applicationHost.config. Этот файл находится по адресу%SystemRoot%\System32\inetsrv\config. Кажется достаточно простым. Мне было легко найти его из командной строки, но когда я пошел, чтобы загрузить его в моем любимом редакторе (Notepad++), я получил ошибку "файл не найден". Оказывается, папка System32 для 32-битных приложений перенаправляется на SysWOW64. Похоже, что нет возможности просмотреть папку System32 с помощью 32-разрядного приложения. Пойди разберись. К счастью, 64-разрядные версии Windows поставляются с 64-разрядной версией Блокнота. Как бы мне это не нравилось, по крайней мере, это работает.
Это сработало для меня. Также в IIS 8 вы можете решить эту проблему, изменив сервер на IIS Express. Перейти к отладке-> Свойства. В Интернете выберите сервер как IIS Express из выпадающего списка, а затем пересоберите решение.