Ошибка HTTP 500.19 и код ошибки: 0x80070021


219

У меня есть простая сборка webAPI с помощью Visual Studio 2013. Она хорошо работает, когда я запускаю ее из VS13, но когда я копирую проект в локальный IIS, это дает мне следующую ошибку.

Ошибка HTTP 500.19 - внутренняя ошибка сервера. Запрашиваемая страница недоступна, поскольку соответствующие данные конфигурации для этой страницы недействительны.

Подробная информация об ошибке:

Модуль IIS Web Core

Уведомление BeginRequest

Обработчик еще не определен

Код ошибки 0x80070021

Ошибка конфигурации Этот раздел конфигурации не может использоваться по этому пути. Это происходит, когда раздел заблокирован на родительском уровне. Блокировка либо по умолчанию (overrideModeDefault = "Deny"), либо устанавливается явно с помощью тега местоположения с overrideMode = "Deny" или устаревшим allowOverride = "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 и связанные с ним функции таким образом.
Илья Бараховский

123

Я получил эту ошибку при попытке разместить службу 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!

РЕДАКТИРОВАТЬ 11-ФЕВРАЛЬ 2016 Только что возникла проблема в Windows 10 Pro, IIS 10, на этот раз это был HTTP 404.0. Исправление остается тем же, включите «Активация HTTP» в разделе «Функции Windows» -> .NET Framework 4.6 Advanced Services -> Службы WCF -> HTTP Activation


Большое вам спасибо @dotnetguy! :-) у меня это тоже сработало. Ошибка возникла, когда я попытался разместить Web API 2.2 и MVC в пустом приложении ASP.NET.
Gurusinghe

@dotnetguy Это именно то, что мне помогло после того, как я не смог заставить IIS работать с моим локальным приложением MVC в Visual Studio. Спасибо. Активация HTTP это!
шелковый пожар

@silkfire рад, что это помогло!
Судханшу Мишра

@dotnetguy Спасибо
Heemanshu Bhalla

@dotnetguy У меня точно такая же проблема, и это решило ее! Большое спасибо! Вы действительно. Net парень! : D
Rian

47

У меня тоже была та же проблема, но после мозгового штурма с IIS и Google в течение многих часов. Я нашел решение. Эта ошибка вызвана тем, что некоторые параметры отключены в IISapplicationHost.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
Дженни О'Рейли

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, просто замените v4.0.30319 ее соответствующим именем папки.

Надеюсь это поможет.


Я пытаюсь запустить два разных проекта VS на моем сервере iis (виртуальная машина); один работает, другой нет ... Вышеуказанное помогло получить первую работу; есть ли причина, по которой 2-й не должен работать?
JosephDoggie

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.
Судханшу Мишра

Спасибо!! Это работает для меня с 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

Я думаю, что это самый краткий и простой для понимания ответ.
themefield

4

Как ошибка идентифицирует - «Это происходит, когда раздел заблокирован на родительском уровне». Чтобы разблокировать раздел, вы можете использовать appcmd.exe и выполнить следующую команду:

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

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


4

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

Мы выбрали Интернет-службы информации, службы всемирной паутины, функции разработки приложений и проверили набор функций, связанных с нашей средой разработки. Например: ASP.NET 4.6. .NET Extensibility 4.6 и др.

Оно работает!


1
Это также исправило мою проблему. В итоге проблема заключалась в том, что после добавления IIS на локальный компьютер я не включил необходимые функции. Это решило это. Thnks.
Jbooker

3

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

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

Это почти полезно, но в IIS 7 в system.webServer нет «defaultPath»
Djorge

Под этим он подразумевает, что если вы хотите обновить проверку подлинности Windows, вы найдете ее в пути system.webServer -> Security -> Authentication.
Mido

3

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


1
Просто установил все остальное необходимое, но все равно не получил его на работу. Затем я просто установил модуль перезаписи URL, и он заработал! Спасибо!
Vitox

Если модуль перезаписи URL отсутствует, код ошибки не будет 0x80070021.
Лекс Ли

3

Если это Windows 10, откройте PowerShell от имени администратора и выполните следующую команду:

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

1

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



0

Ну, мы используем Amazon Web Services и поэтому ищем сценарии и программы для решения этой проблемы. Так что я охотился за инструментом командной строки. Итак, сначала я попробовал хитрость бега

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.

и я погуглил и нашел официальную страницу поддержки 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 Rewrite отсутствует, код ошибки не будет 0x80070021.
Лекс Ли


-3

Решение, которое работало для меня, состояло в том, чтобы удалить мой текущий Web.config и добавить новый. Это решило проблему для меня


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