Помилка HTTP 500.19 та код помилки: 0x80070021


219

У мене проста побудова webAPI від Visual Studio 2013. Він добре працює, коли я запускаю його з VS13, але коли я копіюю проект у локальний IIS, це дає мені наступну помилку.

Помилка HTTP 500.19 - Внутрішня помилка сервера Доступ до запитуваної сторінки неможливо, оскільки пов'язані дані конфігурації для сторінки недійсні.

Детальна інформація про помилку:

Модуль IIS Web Core

Повідомлення BeginRequest

Обробник ще не визначений

Код помилки 0x80070021

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

Налаштування файлу \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Налаштування джерела:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

Ймовірно, це автентифікація Windows відключена в IIS, але це потрібно в web.config програми.
SpaceBison


@SpaceBison Як я можу ввімкнути автентифікацію вікон у IIS8?
Умар Аббас

Ось посилання мого файлу webconfig. icopter.co.uk/Webconfig.txt
Умар Аббас

Чи обдумали ви використовувати модуль перезапису URL-адреси?

Відповіді:


346

Зробив саме таку помилку і прийшов до цього питання. Як згадується у коментарях @SpaceBison, ця відповідь описує рішення - https://stackoverflow.com/a/12867753/404099 . Я помітив це занадто пізно, і він пропускає кілька кроків. Це для мене працювало:

Windows Server 2012, IIS 8.5 . Має працювати і для інших версій.

  • Перейдіть до менеджера серверів, натисніть кнопку Додати ролі та функції
  • У розділі ролей виберіть: Веб-сервер
    • У підрозділі Безпека виберіть усе (я виключив дайджест, обмеження IP та авторизацію URL, оскільки ми їх не використовуємо)
    • У розділі Розробка додатків виберіть .NET Extensibility 4.5, ASP.NET 4.5 і обидва записи ISAPI
  • У розділі функцій виберіть: NET 3.5, .NET 4.5, ASP.NET 4.5
  • У розділі веб-сервера виберіть: Веб-сервер (усі), Інструменти управління (Консоль управління IIS та служба управління), Автентифікація Windows - якщо ви використовуєте будь-який із них

13
Все, що мені довелося додати, - це елементи .NET 4.5 у розділі AppDev та розділі Особливості. Елемент розширення також змусив 2 записи ISAPI.
Білл

Ці кроки допомагають мені вирішити проблему. Дякую.
psulek

Нарешті, рішення для вирішення моїх недуг. Дякую, це має сенс, і його досить просто. Цього дня, здається, не вистачає особливостей та ролей ...
Олександру

ServerManager недоступний у Windows7 Home, як це виправити?
knocte

1
@knocte - в Windows 7 ви можете ввести "Видалити або змінити програму", а потім натиснути "Увімкнути або вимкнути функції Windows". Це не те саме, що менеджер серверів, але ви можете встановити IIS та пов'язані функції таким чином.
Ілля Бараховський

122

Я отримав цю помилку під час спроби розмістити службу WCF у порожній програмі ASP.NET. Все рішення використовувало платформу .NET 4.5, на IIS 8.5 під керуванням Windows 8.1. Гатча мала бути

  1. Відкрийте "Увімкнення та вимкнення функцій Windows"

  2. Перейдіть до розділу WCF під розширеними послугами ASP.NET 4.5

  3. Перевірте активацію HTTP.

  4. Вам буде запропоновано перезапустити систему.

    Екран постріл

Це має виправити HTTP 500.19!

EDIT 11-FEB-2016 Щойно з’явилася проблема в Windows 10 Pro, IIS 10, на цей раз це був HTTP 404.0. Виправлення все одно те саме, увімкніть "Активація HTTP" у розділі Особливості Windows -> .NET Framework 4.6 Додаткові сервіси -> Послуги WCF -> Активація HTTP


Дякую тобі @dotnetguy! :-) це працювало і для мене. Помилка сталася, коли я спробував розмістити веб-API 2.2 та MVC у програмі Empty ASP.NET.
Гурусінгше

@dotnetguy Саме це допомогло мені після того, як я не зміг змусити IIS працювати з моїм місцевим додатком MVC у Visual Studio. Дуже дякую. Активація HTTP це!
шовковий вогонь

@silkfire рада, що це допомогло!
Sudhanshu Mishra

@dotnetguy Спасибі
Heemanshu Bhalla

@dotnetguy Отримав таку ж точну проблему, і це вирішило! Дуже дякую! Ви справді є .Net guy! : D
Ріан

47

У мене також виникала та сама проблема, але після штурму мозку за допомогою IIS та Google протягом багатьох годин. Я знайшов рішення. Ця помилка пояснюється тим, що деякі параметри в IIS вимкненоapplicationHost.config .

Нижче наведено кроки до вирішення:

  1. Перейдіть до C:\Windows\System32\inetsrv\config\applicationHost.configта відкрийте у блокноті
  2. Змініть таке ключове значення, яке присутнє в

    • <section name="handlers" overrideModeDefault="Deny" /> змінити це значення з "Заборонити" на "Дозволити"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> змінити це значення з "Заборонити" на "Дозволити"

Це працювало для мене.


2
Дякую. Після виконання цих кроків з’явилася наступна помилка. Я міг би вирішити це, як описано тут: stackoverflow.com/a/30594003/434742
Jenny O'Reilly

31

Якщо ви працюєте з IIS на цьому комп’ютері вперше, спробуйте запустити інструмент реєстрації ASP.NET IIS (aspnet_regiis.exe).

Ось як це зробити: Якщо ви використовуєте .net Framework v4, відкрийте командний рядок як адміністратор та змініть каталог в базову папку .net Framework, використовуючи:

CD C:\Windows\Microsoft.NET\Framework\v4.0.30319

або, якщо ви використовуєте 64-розрядний комп'ютер, використовуйте:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

коли ви успішно перейшли до відповідного каталогу, запустіть інструмент реєстрації ASP.NET IIS, використовуючи:

aspnet_regiis -i

Якщо ви використовуєте іншу версію .NET Framework, просто замініть v4.0.30319відповідну назву папки.

Сподіваюсь, це допомагає.


Я намагаюся запустити два різні проекти VS на своєму сервері iis (віртуальна машина); один працює, інший ні ... Вище сказане допомогло першим працювати; Чи є причина, що 2-й не повинен працювати?
ДжозефДоггі

7
Раніше я використовував цей метод, але aspnet_regiis більше не підтримується в Windows 8.1. Для реєстрації 4.5 використовуйте Програми та функції> Увімкнення та вимкнення функцій Windows> Інформаційно-інформаційні послуги> Всесвітні веб-сервіси> Особливості розробки програм> Перевірте ASP.NET 4.5 та все, що вам може знадобитися.
masterwok

1
це потрібно запустити як адміністратор (клацніть правою кнопкою миші на значок cmd.exe -> запустити як адміністратор), і навіть він, якщо зможе виявити помилки під час роботи (і створити файл журналу), він працював для мене!
knocte

2
Для IIS 8.5 для Windows 8.1 (або Windows Server 2012) це не працює. Я отримав таку підказку: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Почніть встановлення ASP.NET (4.0.30319.33440). Ця опція не підтримується в цій версії операційної системи. Замість цього адміністраторам слід встановити / видалити ASP.NET 4.5 з IIS8, використовуючи діалогове вікно "Увімкнення / вимкнення функцій Windows", інструмент керування сервером сервера або інструмент командного рядка dism.exe.
Sudhanshu Mishra

Дякую!! Він працює для мене з IIS 10 та Windows 10 :)
Víctor Beltrán

22

Я вирішив це, зробивши наступне:

WebServer(ISS)->WebServer->Application Development
add .NET Extensibility 3.5
add .NET Extensibility 4.5
add ASP.NET 4.5
add ISAPI Extensions
add ISAPI Filters

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


10

У Windows 8.1, IIS 8.5 рішенням для мене було зареєструвати 4.5 з панелі управління:

Програми та функції> Увімкнення та вимкнення функцій Windows> Інформаційно-інформаційні послуги> Послуги всесвітньої веб-служби> Функції розробки додатків> Виберіть ASP.NET 4.5

Натисніть кнопку ОК.


3
У Windows 10 вибору було "ASP", ASP.NET.35. "Та" ASP.NET 4.6 ". Перевірка 4.6 працювала на мене. Дякую!
PeterVermont

Я думаю, що це найкоротша і легка для розуміння відповідь.
тематичне поле

4

Як ідентифікація помилки - "Це відбувається, коли розділ заблокований на батьківському рівні". Щоб розблокувати розділ, ви можете використовувати appcmd.exe та виконати таку команду:

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

Для отримання додаткової інформації про блокування розділів та про те, який контекст для батьківської конфігурації посилається на документацію IIS .


4

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

Ми вибрали Інтернет-інформаційні послуги, веб-сервіси в усьому світі, функції розробки додатків і там перевіряємо набір функцій, пов’язаних із нашим середовищем розробки. Наприклад: ASP.NET 4.6. Розширення .NET 4.6 тощо.

Це працює!


1
Це вирішило і мою проблему. Отже, проблема полягала в тому, що після додавання IIS до моєї локальної машини я не ввімкнув належні функції. Це вирішило це. ДЯКУЄМО
jbooker

3

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

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

Це майже корисно, але на IIS 7 немає "defaultPath" під
system.webServer

Це означає, що якщо ви хочете оновити автентифікацію Windows, то ви знайдете її в шляху system.webServer -> Безпека -> Автентифікація.
Мідо

3

У моєму випадку були правила для модуля перезапису URL-адреси IIS, але у мене цього модуля не було встановлено. Ви повинні перевірити свою web.config, чи є модулі включені, але вони не встановлені.


1
Просто встановив усе інше, що потрібно, але все-таки не змусив його працювати. Тоді я тільки що встановив модуль перезапису URL-адреси, і він працював! Дякую!
Vitox

Якщо модуль перезапису URL-адреси відсутній, код помилки не буде 0x80070021.
Лекс Лі

3

Якщо це Windows 10, тоді відкрийте панель повноважень як адміністратор і запустіть таку команду:

dism /online /enable-feature /all /featurename:IIS-ASPNET45

1

Ваш web.config описує, що ви використовуєте автентифікацію форм - переконайтеся, що ви ввімкнули автентифікацію форм і відключили анонімну автентифікацію в IIS в меню «Автентифікація» для веб-сайту, який працює в IIS.



0

Ми використовуємо веб-сервіси Amazon, тому ми хочемо використовувати сценарії та програми, щоб пройти цю проблему. Тому я був на полюванні за інструментом командного рядка. Тому спочатку я спробував хитрість бігу

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

але оскільки я запускаю хмарний Windows Server 2012, він скаржився

This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

і я заглянув Google і знайшов офіційну сторінку підтримки Microsoft KB2736284 . Отже, є інструмент командного рядка dism.exe. Тому я спробував наступне

dism /online /enable-feature /featurename:IIS-ASPNET45

але він поскаржився і подав список імен функцій, щоб спробувати, тому я спробував їх по черзі, і я протестував свою веб-сторінку WebAPI після кожної, і вона працювала після нижньої в списку.

dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
dism /online /enable-feature /featurename:IIS-ISAPIFilter 
dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 

І тепер я можу перейти на свій веб-сайт WebAPI і переглянути інформацію про API. Це має допомогти декільком людям. [Однак я ще зовсім не вийшов з лісу і не можу зайти на веб-сайт поза межами вікна. Ще над цим працюю.]

Також я зробив кілька попередніх кроків, відповідаючи за відповіді інших людей. Я можу підтвердити, що наступну делегування функцій потрібно змінити (хоча я хотів би знайти для них інструмент командного рядка).

In Feature delegation

Change 
'Handler Mappings' from Read Only to Read/Write

Change 
'Modules' from Read Only to Read/Write

Change 
'SSL Settings' from Read Only to Read/Write

-1

Перевірте, чи встановлено IIS-сервер функцією перезапису URL-адреси.
Якщо він не встановлений, переконайтеся, що у вашому файлі web.config немає конфігурації перезапису URL-адреси

<!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/> ...

Деякий час ми скопіювали конфігурацію із застарілого сервера та відразу розгорнули на абсолютно новий сервер, тоді ми можемо зіткнутися з таким видом 500 питань.


Якщо перезапис URL-адрес відсутній, код помилки не буде 0x80070021.
Лекс Лі


-3

Для мене працювало рішення видалити мій поточний Web.config і додати новий. Це вирішило для мене проблему


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