Помилка конфігурації: Цей розділ конфігурації не можна використовувати на цьому шляху


1779

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

Помилка конфігурації: Цей розділ конфігурації не можна використовувати на цьому шляху. Це відбувається, коли розділ заблоковано на батьківському рівні. Блокування відбувається або за замовчуванням (overrideModeDefault = "Заборонити"), або встановлюється явно тегом локації з overrideMode = "Заборонити" або спадщиною enableOverride = "false".

Більш детально можна ознайомитись тут, у Сценарії 7 відповідає моєму шестигранному коду помилки.

Рішення, наведене на вищезв'язаному веб-сайті, полягає у встановленні дозволу для overrideModeDefault у розділі, згаданому в моїй помилці, у файлі applicationHost.config . У моєму випадку під розділом Security in system.webServer . Але якщо я подивлюсь на applicationHost.config на своєму локальному комп’ютері, де сайт уже належним чином розгорнутий, для цього розділу встановлено відмовити .

Якщо це рішення правильне, як мій локальний екземпляр працює нормально з тим же web.config ? Згідно з моїм додаткомHost.config , цей розділ слід заблокувати, але це не так. Я вважаю за краще не змінювати файл applicationHost.config , оскільки на цьому сервері працює багато інших сайтів. Чи є інше рішення?


2
Якщо ви прийшли сюди, тому що ви отримали цю помилку при спробі використання програми "Сертифікувати в Інтернеті" ( certifytheweb.com ), то ця стаття в блозі може бути доречною: renniestechblog.com/information/…
RenniePet

Відповіді:


3332

У мене була така ж проблема. Не пам'ятаю, де я знайшов це в Інтернеті, але ось що я зробив:

  • Натисніть кнопку "Пуск"
  • у полі пошуку введіть "Увімкнення та вимкнення функцій Windows"
  • у вікні функцій натисніть: "Інтернет-інформаційні послуги"
  • Клацніть: "World Wide Web Services"
  • Клацніть: "Особливості розробки додатків"
  • Перевірте (увімкніть) функції. Я перевірив усіх, крім CGI.

btw, я використовую Windows 7.


84
Побудував свіжий Windows Server 2012 і досить впевнений, забув додати розробку додатків під веб-сервер. Я перевірив усі, окрім CGI, ASP та Server Side Includes, оскільки у мене немає класичного ASP.
Кріс

49
Я перевірив "Особливості розробки додатків", але пізніше зрозумів, що жодна з функцій цієї папки насправді не була вибрана для включення. Я вручну вибрав кожну функцію (крім CGI), щоб видалити помилку.
Ciaran Gallagher

30
Підтверджено також для IIS8 у Windows 8.
Бабак Наффас

74
Підтверджено для IIS8.5 для Windows 8.1.
Майк П.

75
Підтверджено для Windows 10 (IIS 10.0 Build 10240)
шістсони

381

Ви також можете використовувати диспетчер IIS для редагування цих налаштувань.

Догляд за цією статтею Learn IIS :

Використання делегування функцій з кореня IIS:

Піктограма делегування функцій у менеджері IIS

Потім ви можете керувати кожним із машинних дозволів читання / запису на рівні машини, що в іншому випадку призведе до помилок overrideMode = "Заборонити" .

Приклад використання функції делегування


16
Щоб продовжити це, те, що для мене спрацювало (зверніть увагу, що це рішення знаходиться у вікні DEV, а НЕ у виробничій системі): -> Сортувати за делегуванням -> Знайти всі типи лише для читання -> Встановити їх для читання / запису
Aaron Рід

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 / ...
Ajith

184

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

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

Вимоги до Windows Server 2012 та IIS 8 щодо MVC


30
Для уточнення, прапорець "Підтримка веб-сервера (IIS)" не знаходиться під вузлом "Сервер додатків" на малюнку вище. Він з’явиться після того, як ви виконаєте кілька «наступних» і перейдете Рольові функції та функції сервера на лівій панелі навігації та перейдете до «Рольові послуги» (не відображається на малюнку вище, але з’явиться для вас після декількох «наступних»). Це
зводило

2
для мене параметри з'явилися лише після того, як я вперше додав правило Application Server, а потім перезапустив майстра додавання ролей і функцій
wonster

145

Перейдіть до розділу "C: \ Windows \ System32 \ inetsrv \ config" (тут вам потрібні права адміністратора) Відкрийте applicationHost.config

Примітка . У IISExpress та Visual Studio 2015 додатокHost.config зберігається в$(solutionDir).vs\config\applicationhost.config

Знайдіть розділ, який з’явився у частині «джерела конфігурації» сторінки повідомлення про помилку. Для мене це, як правило, "модулі" або "обробники"

Змініть overrideModeDefaultатрибут, який будеAllow

Отже, весь рядок зараз виглядає так:

<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />

Після збереження файлу сторінка завантажується в моєму браузері.

Попередження: Редагування applicationHost.config у 64-розрядної Windows


2
Посилання на 64-бітну 404, до поганого ви не включили корисну інформацію безпосередньо у свою відповідь.
Ерік Філіпс

1
Це було для мене в ipSecurity в середовищі розробників Windows 8.1, +1.
Трюк Moby's Double Double

Для 64-розрядної Windows вам потрібно пройти через notepad.exe та відкрити% SystemRoot% \ System32 \ inetsrv \ config, щоб отримати правильну копію файлу
Едді Флетчер

Це трапилось зі мною під час налагодження локально у Visual Studio 2017, у розділі «аутентифікація». Рятувальник життя!
D Ie

69

Вам потрібно розблокувати обробники. Це можна зробити за допомогою наступної команди cmd:

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

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


це працювало для мене також для system.webServer / security / ipSecurity
Барт

3
Бінго. Довелося працювати адміністратором.
JackMorrissey

3
Мені довелося це зробити і для -section: system.webServer / модулів.
Майк

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 noobs, першим кроком має стати перевірка того, що правильна версія asp.net фактично встановлена.
mrfelis

1
відмінник: D
Фабіо Сільва Ліма

38

Я запустив ці дві команди з піднесеного командного рядка:

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

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

Це не дає відповіді на запитання. Щоб критикувати або вимагати роз'яснення у автора, залиште коментар під їх публікацією - ви завжди можете коментувати свої власні публікації, і як тільки у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію .
Грак

19
@Rook - це абсолютно хороша відповідь, оскільки це не сліпо сприяє включенню функцій розробки додатків на сервері; в ньому зазначено контрольоване рішення конкретного сценарію отримання цієї помилки. Це можна було б сказати краще. Гарна робота сприяє підвищенню впевненості у нового хлопця - він ніколи не повертався після того, як ви та NAZIK вперше висловлювали думку про свою першу спробу приєднатися до громади.
qujck

1
Це вирішило мою проблему із додатком, який мав конфігурацію рівня автентифікації на рівні програми.
nebffa

Приємно, це зробило трюк, коли особливості розробки додатків не зробили
Стівен Холт

1
Для мене працює, але чому?
Кевман

37

За мою відповіді на це питання подібного ;

Спробуйте розблокувати відповідні настройки конфігурації IIS на рівні сервера:

  1. Відкрийте менеджер IIS
  2. Виберіть сервер на панелі «Підключення»
  3. Відкрийте редактор конфігурації на головній панелі
  4. У спадному розділі Виберіть розділ для розблокування, наприклад system.webServer> defaultPath
  5. Клацніть Розблокувати атрибут у правій області
  6. Повторіть будь-які інші налаштування, які потрібно розблокувати
  7. Перезапуск IIS (необов’язково) - Виберіть сервер на панелі Концесії, натисніть кнопку Перезапустити на панелі дій

1
Це рішення працювало для мене, але справжня причина була іншою - мені довелося встановити ASP.NET 4.5 (Add-WindowsFeature Web-Asp-Net45).
Der_Meister


26

Найкращим варіантом є зміна Application Settingsз Custom Site Delegation
відкритого IISта з вибору кореня, Feature Delegationа потім вибору Application Settingsта вибору з правої бічної панеліRead/Write Крок 1 Крок №2


Мій менеджер IIS не має багатьох цих функцій. Я думаю, що я повинен додати їх через функції Windows. У мене були вибрані всі (чорне квадратне поле), але коли я натискаю на нього, жоден із варіантів не був вибраний! Я ніколи цього не бачив, використовуючи всі ОС Windows. Сором вам Microsoft! Витратили купу часу. Упевніться, що ВСІ ОСОБЛИВОСТІ ВІННИКІВ ПЕРЕВІРІТЬСЯ, ЩО ВИБІРІТЬСЯ .. НЕ ВИКОРИСТОВУЄТЬСЯ ЧОРНИЙ
ВИБОР ЧЕРВОНОГО КВАДРУ

3
Або зрозумійте, що означає "чорний квадрат", коли ви встановлюєте програмне забезпечення на свій сервер.
LarryBud

1
Чи можу я додати крок 2.1 -> натиснути «спеціальна делегація сайту» праворуч, а потім вибрати, на якому веб-сайті ви хочете дозволити перевизначення у верхній частині спадного меню. Я пропоную не дозволяти перезаписувати на всіх сайтах, а лише на потрібний вам сайт. Потім
перейдіть

26

Це зробило хитрість для мене для IIS 8 Windows Server 2012 R2

Перейдіть до "Увімкнути функції"

Потім перейдіть до всіх налаштувань за замовчуванням, Далі, Далі, Далі тощо.

Потім виберіть, як показано нижче, введіть тут опис зображення

Потім скиньте IIS (необов’язково), але зробіть це безпечнішою стороною.

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

Це додаткове рішення, оскільки його загальна проблема має різні проблеми, а отже, різне рішення. Ура!


1
це також працює на Windows сервері 2016
М.

1
Цей для мене працює
aronccs

Робота вдосконалюється на Windows Server 2016!
D Тодоров

17

Щоб виправити це, відкрийте програму IIS Express applicationhost.config. Цей файл зберігається в C: \ Користувачі [ваше ім’я користувача] \ Документи \ 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; наприклад,

Позначивши делегування функції сайту "Автентифікація - 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" />

12

У моєму випадку це було те, що на сервері не було включено "Активацію HTTP" в рамках .NET Framework особливостей. Тож для Windows Server 2012 рішення, яке працювало для мене, було:

Менеджер сервера -> Додавання ролей та функцій -> Особливості -> переконайтесь, що під .NET Framework версії, яку ви хочете використовувати, встановлено прапорець "Активація HTTP"


не працював @Ray на сервері Windows 7, 8, 10, 2008, сервер 2012?
Кікенет

9

Потужний спосіб ввімкнення функцій (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 конфігураційний файл, який вирішить проблему, нам потрібно пройти ієрархію файлів config, щоб побачити спадщину. Перевірте посилання нижче, щоб пройти через ієрархію файлів та успадкування в 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. (\ Користувачі \% USER% \ Документи \ IISExpress \ config \ applicationhost.config)

У моєму випадку це було налаштування, яке потрібно було встановити. Звичайно, це може бути для вас щось інше:

<section name="ipSecurity" overrideModeDefault="Allow" />

4

Я помітив одну відповідь, яка була схожа, але в моєму випадку я скористався 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

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>

3

Чи можете ви спробувати це:

Перейдіть до шляху програми, де ви отримуєте помилку відхилення, клацніть правою кнопкою миші

Властивості-> вкладка безпеки

У цьому випадку змініть дозволи та встановіть прапорці для читання та запису. Тоді він буде працювати без помилок сподіваємось.



1

У мене виникла проблема, коли я вкладав значення override = "Allow" (вже згадувалося тут) ...... але в бітній системі x64 ....... мій 32 блокнот ++ фантомно їх зберігав. Перехід на Блокнот (який є 64-бітовою програмою для x64-бітного O / S) дозволив мені зберегти налаштування.

Подивитися :

http://dpotter.net/technic/2009/11/editing-applicationhostconfig-on-64-bit-windows/

Відповідний текст:

Однією з проблем, з якими я стикаюсь, потрібно переглядати та, можливо, редагувати applicationHost.config. Цей файл знаходиться за адресою% SystemRoot% \ System32 \ inetsrv \ config. Здається, досить просто. Мені вдалося легко знайти його з командного рядка, але коли я пішов завантажити його в улюблений редактор (Notepad ++), у мене з’явилася помилка, що не знайдено файлу. Виявляється, папку System32 перенаправлено для 32-бітних програм на SysWOW64. Здається, немає можливості переглядати папку System32 за допомогою 32-розрядної програми. Піди розберися. На щастя, 64-розрядні версії Windows поставляються із 64-бітною версією Notepad. Наскільки мені це не подобається, принаймні це працює.


1

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

Розділ видалено:

    <security>
        <authentication>
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>

0

У мене було те саме питання.

  • Вирішили це, включивши функцію Server Server. Після цього пережив iis.

Як увімкнути функцію сервера додатків ? в Windows Server 2008 o 2012? Windows 7,8,10? використовуючи Powershell?
Кікенет

0

Це працювало для мене Також у IIS 8 ви можете вирішити цю проблему, змінивши сервер на IIS Express. Перейдіть до налагодження-> Властивості У веб-сервері виберіть сервер як IIS Express зі спадного меню, а потім відновіть рішення


0

Щоб внести зміни на рівні програми (Web.Config):

Видаліть рівень довіри з web.config:

Насправді я отримував цю помилку, коли намагався розмістити свій веб-сайт на хостинговому сервері, де я не маю контролю над їх сервером. Видалення вищевказаного рядка з моєї програми web.config вирішило мою проблему.


0

Для мене працювало наступне:

Перейдіть до властивостей проекту. Веб-вкладка. Встановіть Local IIS та встановіть конкретну сторінку.

У мене є Windows 7 та Visual Studio 2013.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.