Ошибка конфигурации: этот раздел конфигурации не может использоваться по этому пути

Я столкнулся с ошибкой при развертывании сайта на сервере. При попытке загрузить домашнюю страницу или получить доступ к аутентификации на новом сайте в 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:

Значок делегирования функции в диспетчере IIS

Затем вы можете контролировать каждое из прав на чтение / запись на уровне компьютера, что в противном случае даст вам ошибки overrideMode="Deny".

Пример использования функции делегирования

Для Windows Server 2012 и IIS 8 процедура аналогична.

Web Server (IIS) а также Application Server должен быть установлен, и вы также должны иметь Web Server (IIS) Support под Application Server,

Требования к Windows Server 2012 и IIS 8 для MVC

Перейдите в "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 => "факультативные функции" => ОК

  1. Включите эти функции в разделе "Функции разработки приложений"

Вам нужно разблокировать обработчики. Это можно сделать с помощью следующей команды 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 на уровне сервера следующим образом:

  1. Открыть IIS Manager
  2. Выберите сервер на панели соединений
  3. Откройте редактор конфигурации на главной панели
  4. В раскрывающемся списке "Разделы" выберите раздел, который нужно разблокировать, например, system.webServer > defaultPath
  5. Нажмите Разблокировать атрибут в правой панели
  6. Повторите для любых других настроек, которые вам нужно разблокировать
  7. Перезапустить IIS (необязательно). Выберите сервер на панели Conncetions и нажмите "Перезагрузить" на панели действий.

Лучший вариант - поменять Application Settings от Custom Site Delegation
открыто IIS и из корня выберите Feature Delegation а затем выберите Application Settings и с правой боковой панели выберите Read/Write Шаг 1 Шаг 2

Это помогло мне, для 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 мы обнаружили ошибку, возникшую при попытке просмотра "Проверка подлинности" для сайта, когда:

  1. Делегирование функций сервера, помеченное как "Аутентификация - Windows" = "Только чтение"
  2. На сайте был файл web.config, который явно ссылался на проверку подлинности Windows; например,

Отмечая на сайте функцию делегирования "Аутентификация - Windows" = "Чтение / запись", ошибка исчезла. Похоже, что с функцией, помеченной как "Только чтение", web.config вообще не имеет права ссылаться на него, даже чтобы отключить его, так как это, по-видимому, составляет запись.

сайт web.config IIS Manager - делегирование функций сервера

Похоже, что в 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

Так что вам нужно проверить настройки приложения в следующем порядке

  1. ApplicationHost.config в C:windows\system32\inetsrv\config. Измените атрибут overrideModeDefault на Разрешить.
  2. ApplicationName.config или web.config в каталоге приложений
  3. Web.config в корневом каталоге.
  4. Web.config на определенном веб-сайте (моя проблема была найдена в этом месте).
  5. Web.config корневой сети (конфигурация сервера)
  6. 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 из выпадающего списка, а затем пересоберите решение.

Другие вопросы по тегам