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

1780

Я столкнулся с ошибкой при развертывании сайта на сервере. При попытке загрузить домашнюю страницу или получить доступ к аутентификации на новом сайте в IIS, я получаю сообщение об ошибке:

Ошибка конфигурации: этот раздел конфигурации нельзя использовать по этому пути. Это происходит, когда раздел заблокирован на родительском уровне. Блокировка либо по умолчанию (overrideModeDefault = "Deny"), либо устанавливается явно с помощью тега местоположения с помощью overrideMode = "Deny" или устаревшего allowOverride = "false".

Более подробную информацию можно найти здесь, в сценарии 7 соответствует мой шестнадцатеричный код ошибки.

Решение, приведенное на связанном сайте выше, состоит в том, чтобы установить Allow for overrideModeDefault в разделе, упомянутом в моей ошибке, в файле applicationHost.config . В моем случае в разделе Безопасность в system.webServer . Но если я посмотрю на applicationHost.config на моем локальном компьютере, где сайт уже правильно развернут, для этого раздела будет установлено значение « Запретить» .

Если это решение правильно, как мой локальный экземпляр работает нормально с тем же web.config ? Согласно моему applicationHost.config , этот раздел должен быть заблокирован, но это не так. Я бы предпочел не изменять файл applicationHost.config , потому что на этом сервере запущено много других сайтов. Есть ли другое решение?

Alex
источник
2
Если вы пришли сюда, потому что получили эту ошибку при попытке использовать программу «Сертификация в Интернете» ( certifytheweb.com ), тогда эта статья блога может быть актуальной: renniestechblog.com/information/…
RenniePet

Ответы:

3332

У меня такая же проблема. Не помню, где я нашел это в Интернете, но вот что я сделал:

  • Нажмите кнопку «Пуск»
  • в поле поиска введите «Включить или отключить функции Windows»
  • в окне функций нажмите: «Информационные службы Интернета»
  • Нажмите: "Услуги всемирной паутины"
  • Нажмите: «Особенности разработки приложений»
  • Проверьте (включите) функции. Я проверил все, кроме CGI.

Кстати, я использую Windows 7.

chuck97224
источник
84
Построил свежую Windows Server 2012 и, конечно же, забыл добавить разработку приложений под веб-сервером. Я проверил все, кроме CGI, ASP и включений на стороне сервера, так как здесь у меня нет классического ASP.
Крис
49
Я проверил «Функции разработки приложений», но позже понял, что ни одна из функций в этой папке фактически не была выбрана для включения. Я вручную выбрал каждую функцию (кроме CGI), чтобы удалить ошибку.
Кьяран Галлахер
30
Подтверждено для IIS8 на Windows 8 тоже.
Бабак Наффас
74
Подтверждено для IIS8.5 для Windows 8.1.
Майк П.
75
Подтверждено для Windows 10 (IIS 10.0 Build 10240)
Sixones
381

Вы также можете использовать диспетчер IIS для редактирования этих настроек.

Уход за этой статьей Learn IIS :

Использование функции делегирования из корня IIS:

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

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

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

облет
источник
16
Чтобы продолжить это, мне удалось (обратите внимание, что это решение находится на моем устройстве DEV, а НЕ на производственной системе): -> Сортировать по делегированию -> Найти все типы только для чтения -> Установить для них чтение / запись
Аарон Рид
1
Это исправило сообщение об ошибке, которое я получал в диспетчере IIS7. Еще более удивительным является то, что он также исправил HTTP 500, которые клиенты получали при попытке получить доступ к веб-сайту.
Брайан Гидеон
6
Здесь размещены два, казалось бы, разных решения, оба из которых необходимы. Во-первых, установите функции поддержки «Сервер приложений» и «Веб-сервер». Во-вторых, проверьте настройки делегирования и измените настройку «Чтение» на «Только чтение». Важно: ПРИМЕЧАНИЕ. Неправильная конфигурация может быть недоступна в функциях делегирования, если не установлены правильные функции поддержки. В моем случае проблема была «Аутентификация - анонимная», и эта функция делегирования не появлялась, пока я не установил функцию сервера приложений.
клен
1
Это сработало для меня. в IIS 8.5, Windows Server 2012 R2
ellickakudy rajeesh
1
Вопрос для меня был в разделе аутентификации, в IIS 10 в Windows 10. Эта ссылка помогла мне. Knowledgebase.progress.com/articles/Article/…
Аджит
185

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

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

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

кругозор
источник
30
Для пояснения, флажок «Поддержка веб-сервера (IIS)» находится не под узлом «Сервер приложений» на рисунке выше. Он будет отображаться после того, как вы выполните несколько «следующий» и передадите серверные роли и компоненты на левой навигационной панели и перейдете к «Службам ролей» (не отображается на рисунке выше, но появится для вас после нескольких «следующий»). Это сводило меня с ума: P
thedrs
2
для меня параметры появились только после того, как я впервые добавил правило сервера приложений, а затем перезапустил мастер добавления ролей и компонентов
чудо
145

Перейдите в «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

Облако Ним
источник
2
Ссылка для 64-битной - 404, к сожалению, вы не включили полезную информацию непосредственно в свой ответ.
Эрик Филипс
1
Это было для меня на ipSecurity в среде разработки Windows 8.1, +1.
Moby's Stunt Double
Для 64-битной Windows вам нужно пройти через notepad.exe и открыть% SystemRoot% \ System32 \ inetsrv \ config, чтобы получить правильную копию файла
Эдди Флетчер
Это случилось со мной при локальной отладке в Visual Studio 2017, в разделе «аутентификация». Спасатель жизни!
т.
69

Вам нужно разблокировать обработчики. Это можно сделать с помощью следующей команды cmd:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers

Может быть, другая информация для людей, которые получают эту ошибку на IIS 8, в моем случае была на платформе Microsoft Server 2012. Я потратил пару часов на борьбу с другими ошибками, которые появлялись после выполнения appcmd. В конце концов я смог это исправить, удалив роль веб-сервера и установив ее снова.

Грегор Примар
источник
у меня это сработало и для system.webServer / security / ipSecurity
Барт Каликсто
3
Бинго. Пришлось работать от имени администратора.
ДжекМоррисси
3
Я должен был сделать это и для -section: system.webServer / modules.
Майк
1
работал для меня - я искал, чтобы установить /section:access /sslFlags:SslNegotiateCertи обнаружил, что я должен был использовать вышеупомянутое, с -section:access которым сообщили какUnlocked section "system.webServer/security/access"...
Шон Уайльд
1
Работал для меня на Windows Server 2012 R2
Robben_Ford_Fan_boy
50

1. Откройте « Включить или отключить функции Windows » с помощью: WinKey + R => «факультативные функции» => ОК

введите описание изображения здесь

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

введите описание изображения здесь

Проверено на Win 10 - Но, вероятно, будет работать и на других версиях Windows.

Авирам Файербергер
источник
2
идеально. Мне нужно было только установить флажок ASP.NET 4.7, и он автоматически выбрал все другие необходимые требования. Работал как шарм, даже не перезагружая сайт.
Билл Тарбелл
Для нас, новичков IIS, проверка того, что на самом деле установлена ​​правильная версия asp.net, должна быть первым шагом.
mrfelis
1
отличный друг: D
Фабио Силва Лима
38

Я запустил эти две команды из командной строки с повышенными правами:

%windir%/system32/inetsrv/appcmd unlock config /section:anonymousAuthentication

%windir%/system32/inetsrv/appcmd unlock config /section:windowsAuthentication
Benji
источник
Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любой пост .
Ладья
19
@ Ладно, это очень хороший ответ, потому что он не поддерживает вслепую включение функций разработки приложений на сервере; оно устанавливает контролируемое решение для конкретного сценария получения этой ошибки. Это можно было бы сформулировать лучше. Хорошая работа, повышающая уверенность в себе нового парня - он никогда не возвращался после того, как вы и НАЗИК высказались во всей своей первой попытке присоединиться к сообществу.
Qujck
1
Это устранило мою проблему с приложением, которое имело конфигурацию уровня проверки подлинности Windows.
Небфа
Хорошо, это помогло, а функции разработки приложений
Стивен Холт,
1
У меня работает, но почему?
Кевман
37

Согласно моему ответу на этот подобный вопрос ;

Попробуйте разблокировать соответствующие параметры конфигурации IIS на уровне сервера следующим образом:

  1. Открыть IIS Manager
  2. Выберите сервер на панели соединений
  3. Откройте редактор конфигурации на главной панели
  4. В раскрывающемся списке «Разделы» выберите раздел для разблокировки, например, system.webServer> defaultPath
  5. Нажмите Разблокировать атрибут в правой панели
  6. Повторите для любых других настроек, которые вам нужно разблокировать
  7. Перезапустить IIS (необязательно). Выберите сервер на панели Conncetions и нажмите «Перезагрузить» на панели действий.
Крис
источник
1
Это решение работало для меня, но настоящая причина была в другом - мне пришлось установить ASP.NET 4.5 (Add-WindowsFeature Web-Asp-Net45).
Der_Meister
26

В Windows Server 2012 с IIS 8 я решил эту проблему, включив функцию ASP.NET 4.5 :

введите описание изображения здесь

и затем следуя ответу Кена .

Kimi
источник
2
В PowerShell: Add-WindowsFeature Web-Asp-Net45
Der_Meister
26

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

Доктор TJ
источник
Мой диспетчер IIS не имеет многих из этих функций. Я думаю, что я должен добавить их через функции Windows. Я выбрал их все (черный квадрат), но когда я нажал на него, ни один из вариантов не был выбран! Я никогда не видел этого, используя все ОС Windows. Позор вам, Microsoft! Потрачено впустую кучу времени. УБЕДИТЕСЬ, ЧТО ВСЕ ОСОБЕННОСТИ WINDOWS ПРОВЕРЕНЫ, ЧТО ЖЕЛАЕТСЯ. НЕ ИСПОЛЬЗУЙТЕ ВЫБОР ЧЕРНОГО КВАДРАТА
yardpenalty.com
3
Или понять, что означает «черный квадрат», когда вы устанавливаете программное обеспечение на свой сервер.
LarryBud
1
Могу ли я добавить шаг 2.1 -> нажмите «Пользовательское делегирование сайта» справа, затем выберите, какой сайт вы хотите разрешить переопределение, в верхнем раскрывающемся списке. Я предлагаю не разрешать перезапись на всех сайтах, а только на том сайте, который вам нужен. Затем перейдите к шагу 3.
foxontherock
26

Это помогло мне, для IIS 8 Windows Server 2012 R2

Перейти к «Включить функции»

Затем перейдите ко всем настройкам по умолчанию, Далее, Далее, Далее и т. Д.

Затем выберите, как показано ниже, введите описание изображения здесь

Затем сбросьте IIS (необязательно), но сделайте это более безопасной стороной.

введите описание изображения здесь

Это дополнительное решение, так как это общая проблема, у всех разные проблемы и, следовательно, разные решения. Ура!

Усман Юнас
источник
1
это также работает на сервере Windows 2016
М.
1
Это работает для меня
aronccs
Прекрасно работает на Windows Server 2016!
Д Тодоров
17

Чтобы это исправить, откройте приложение 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.

Рао Аднан
источник
15

В нашем случае на IIS 8 мы обнаружили ошибку, возникшую при попытке просмотра «Аутентификация» для сайта, когда:

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

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

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

Железный стержень
источник
13

Похоже, что в 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" />
PBMe_HikeIt
источник
12

В моем случае это было то, что на сервере не была включена «Активация HTTP» под .NET Framework Features. Итак, для Windows Server 2012 решение, которое работало для меня, было:

Диспетчер серверов -> Добавить роли и функции -> Функции -> убедитесь, что в .NET Framework версии, которую вы хотите использовать, установлен флажок «Активация HTTP»

Павел Немец
источник
не работал @Ray в Windows 7, 8, 10, 2008 server, 2012 server?
Kiquenet
9

Способ включения функций 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
Крис С
источник
6

Мне нужно было изменить настройки SSL в подпапке, когда я получил это приятное сообщение. В моем случае мне помогли следующие действия.

Открыт C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config

И изменил значение с overrideModeDefault = "Запретить" на "Разрешить"

<sectionGroup name="system.webServer">
 ...
    <sectionGroup name="security">
        <section name="access" overrideModeDefault="Allow" />
    </sectionGroup>
Стефан Мичев
источник
6

Ошибка говорит о том, что раздел конфигурации заблокирован на родительском уровне. Таким образом, это не будет непосредственно 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, и вы должны их найти.

Авил Маскаренхас
источник
4

В моем случае я получил эту ошибку, потому что я работал с неправильным файлом конфигурации.

Я делал это:

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.

Марк Р
источник
4

В моем случае это было что-то еще.

Когда я загрузил решение в новой версии Visual Studio, VS, очевидно, создал новый файл applicationhost.config для конкретного проекта:

MySolutionDir \ .vs \ Config \ ApplicationHost.config

Он начал использовать настройки из нового конфига вместо моих уже настроенных глобальных настроек IIS Express. (\ Users \% USER% \ Documents \ IISExpress \ Config \ applicationHost.config)

В моем случае это была настройка, которую нужно было установить. Конечно, это может быть что-то для вас:

<section name="ipSecurity" overrideModeDefault="Allow" />
Эндрю
источник
4

Я заметил один похожий ответ, но в моем случае я использовал Сконфигурированный редактор IIS, чтобы найти раздел, который я хотел «разблокировать».

введите описание изображения здесь

введите описание изображения здесь

Затем я скопировал путь и использовал его в своей автоматизации, чтобы разблокировать его перед изменением разделов, которые я хотел редактировать.

. "$($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
Брэндон Хоукейкер
источник
3

Эта же проблема возникла после установки 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>
Bhavesh
источник
3

Можете ли вы попробовать это:

Перейдите по пути приложения, где вы получаете сообщение об ошибке, щелкните правой кнопкой мыши

Свойства-> вкладка Безопасность

В этом, измените разрешения и установите флажок для чтения и записи. Тогда он будет работать без каких-либо ошибок.

user5891257
источник
2

Для Windows Server 2008 и IIS 7 процедура аналогична. пожалуйста, обратитесь к этому: http://msdn.microsoft.com/en-us/library/vstudio/bb763178(v=vs.100).aspx

в службе добавления ролей вы увидите «Функции разработки приложений»

Проверьте (включите) функции. Я проверил все.

Скотт 混合 理论
источник
1

У меня была проблема, когда я вставлял значения переопределения = "Разрешить" (уже упоминалось здесь) ...... но в 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-разрядной версией Блокнота. Как бы мне это не нравилось, по крайней мере, это работает.

granadaCoder
источник
1

В моем случае я получал эту ошибку при попытке обновить параметры проверки подлинности в IIS, в дополнение к просмотру. Мне удалось устранить эту ошибку, удалив параметр аутентификации из самого файла web.config. Удаление проблемного раздела конфигурации может быть менее инвазивным и предпочтительным в некоторых случаях, чем чрезмерное изменение ролей и функций сервера:

Раздел удален:

    <security>
        <authentication>
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
Брэндон Хоукейкер
источник
0

Я была такая же проблема.

  • Решил это, включив функцию сервера приложений. После этого перезапустился.
Джо Редди
источник
Как включить функцию сервера приложений ? в Windows Server 2008 o 2012? Windows 7,8,10? используя Powershell?
Кикенет
0

Это сработало для меня. Также в IIS 8 вы можете решить эту проблему, изменив сервер на IIS Express. Перейти к отладке-> Свойства. В Интернете выберите сервер как IIS Express из выпадающего списка, а затем пересоберите решение.

LahiruD
источник
0

Чтобы внести изменения на уровне приложения (Web.Config):

Удалите уровень доверия из web.config:

На самом деле я получал эту ошибку, когда пытался разместить свой веб-сайт на хостинг-сервере, где у меня нет контроля над их сервером. Удаление вышеуказанной строки из моего приложения web.config решило мою проблему.

Анкит Праджапати
источник
0

Следующее работало для меня:

Перейти к свойствам проекта. Веб-вкладка. Установите Локальный IIS и установите конкретную страницу.

У меня Windows 7 и Visual Studio 2013.

user3900346
источник