Как исправить: обработчик «PageHandlerFactory-Integrated» имеет неверный модуль «ManagedPipelineHandler» в своем списке модулей

543

Я настраиваю проект MVC 3 для работы с локальной установкой IIS и обнаружил следующую ошибку 500:

У обработчика «PageHandlerFactory-Integrated» есть неверный модуль «ManagedPipelineHandler» в его списке модулей.

Оказывается, это потому, что ASP.Net не был полностью установлен с IIS, хотя я установил этот флажок в диалоговом окне «Добавить функцию». Чтобы это исправить, я просто запустил следующую команду в командной строке

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

Если бы я работал в 32-битной системе, это выглядело бы следующим образом:

%windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i

У меня вопрос, есть ли способ установить IIS на Windows 7, чтобы использовать .NET 4.0 (MVC 3) без этого дополнительного шага?

hspain
источник
2
Вопрос на самом деле решил мою проблему. Я бы ответил на вопрос в качестве ответа, если бы мог. :)
Серегветрин,
Да, описание вопроса решило и мою проблему. Спасибо :-)
sramsay

Ответы:

950

Оказывается, это потому, что ASP.Net не был полностью установлен с IIS, хотя я установил этот флажок в диалоговом окне «Добавить функцию». Чтобы это исправить, я просто запустил следующую команду в командной строке

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

Если бы я работал в 32-битной системе, это выглядело бы следующим образом:

%windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i

Помните, чтобы запустить командную строку от имени администратора ( CTRL+ SHIFT+ ENTER)

hspain
источник
У вас может быть сообщение «Aspnet_regiis.exe не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл». ошибка. В этом случае вы исполняемый файл не из папки .NET 4.0, а из папки 2.0 (см. Мой ответ ниже)
Никита Г.
На некоторых сайтах я читал, что нам нужно запустить aspnet_regiis.exe, но никто не объяснил, что параметр обязателен, иначе ничего не происходит.
Пимента
отличный простой ответ. Я знал, что это плохая установка, не знал, как это исправить.
elcool
Обратите внимание, что если вы используете Windows Server 2012, вам необходимо это через Управление> Добавить роли и компоненты> Функции. В моем случае IIS8 должен был установить / активировать ASP.NET 4.5.
Старк
5
не забывайте работать от имени администратора
Рейд Эванс
17

Принятый ответ правильный, однако иногда вы можете получить сообщение об ошибке « Aspnet_regiis.exe не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл ».

Чтобы решить это, попробуйте следующее:

  1. Убедитесь, что ваша установка .NET 4.0 не повреждена (запустите программу установки и восстановите ее). Также есть вероятность, что он вообще не установлен на вашем компьютере.

  2. Если вы уверены, что у вас не установлен .NET 4.0 и хотите запустить его как .NET 2.0, попробуйте следующее :

Если вы видите сообщение «Aspnet_regiis.exe не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.», Переключитесь на C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Aspnet_regiis.exe -i в командной строке.

Никита Г.
источник
Aspnet_regiis.exe -i исправил мою проблему на Win Server 2008 IIS7.
VSB
9

Чтобы решить проблему, попробуйте repair the .net framework 4и затем выполните команду

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
шах
источник
9

Ошибка: обработчик «PageHandlerFactory-Integrated» имеет неверный модуль «ManagedPipelineHandler» в своем списке модулей

Я нашел статьи, чтобы решить эту проблему, просто запустив следующие команды в командной строке:

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

Если бы система была 32-битной, она бы выглядела так:

%windir%\Microsoft.NET\Framework\v4.0.21006\aspnet_regiis.exe -i

Но когда я попытался выполнить эти команды с помощью командной строки, я получил следующее сообщение об ошибке / предупреждение:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis.exe -i Microsoft (R) ASP.NET RegIIS версия 4.0.30319.33440 Утилита администрирования для установки и удаления ASP.NET на локальном компьютере. Авторское право (C) Microsoft Corporation. Все права защищены. Начните установку ASP.NET (4.0.30319.33440). Эта опция не поддерживается в этой версии операционной системы. Вместо этого администраторам следует установить / удалить ASP.NET 4.5 с IIS8, используя диалоговое окно «Включение и отключение функций Windows», средство управления диспетчером сервера или средство командной строки dism.exe. Для получения дополнительной информации , пожалуйста , см http://go.microsoft.com/fwlin к /? LinkID = 216771. Закончена установка ASP.NET (4.0.30319.33440). **

Чтобы исправить это на Windows 8.1, я бы предложил сделать следующее.

Решение:

Перейти: Включение или отключение функций Windows -> Информационные службы Интернета -> Службы всемирной паутины -> Функции разработки приложений -> Включить ASP.NET 4.5

Это должно решить проблему.

Шубхам Гупта
источник
У меня такая же проблема. Спасибо! Для меня мне пришлось включить «ASP.NET 4.6».
Дженни О'Рейли
4

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

BornToCode
источник
Так очевидно ... но так легко не заметить. Спасибо!
Пол Лемке
Это было проблемой для меня. По-видимому, я как-то отключил это, или было установлено «Нет управляемого кода». Переключение обратно на v4.0 заставило мой сайт загрузиться.
redOctober13
3

Если вы хотите развернуть приложение MVC без установки MVC, вы можете развернуть DLL MVC вместе с вашим приложением . Это позволяет обойти установку MVC 3. Вы можете использовать функции в некоторых пространствах имен .Net 4.0, не устанавливая .Net, используя аналогичный подход.

Дэвид Векслер
источник
4
Регистрация asp.net в iis не имеет никакого отношения к наличию или отсутствию mvc, да, вы можете включить необходимые dll-файлы в папку bin, но если iis не распознает asp-файлы, это не значит, что dll может сделать
Шехар,
3

Я добавил пути ISAPI / CGI для .Net 4. Это не помогло решить проблему. Поэтому я выполнил ремонт установки .Net V4 (Client и Extended). Который попросил перезагрузку. Это исправило это для меня.

Кент
источник
2

Чтобы исправить это на компьютере под управлением Windows 8.1 Professional, выполните следующие действия.

  1. Установите установщик веб-платформы. http://www.microsoft.com/web/downloads/platform.aspx

  2. В установщике веб-платформы установите ASP.NET 4.5 (эта функция имеет одну зависимость).

Если вы просто попробуете вышеупомянутую команду командной строки cmd из самого популярного ответа, вы получите следующее сообщение об ошибке / предупреждение:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis.exe -i Microsoft (R) ASP.NET RegIIS версия 4.0.30319.33440 Утилита администрирования для установки и удаления ASP.NET на локальном компьютере. Авторское право (C) Microsoft Corporation. Все права защищены. Начните установку ASP.NET (4.0.30319.33440). Эта опция не поддерживается в этой версии операционной системы . Вместо этого администраторам следует установить / удалить ASP.NET 4.5 с IIS8, используя диалоговое окно «Включение и отключение компонентов Windows», средство управления диспетчером сервера или средство командной строки dism.e xe. Для получения дополнительной информации , пожалуйста , см http://go.microsoft.com/fwlin к /? LinkID = 216771. Закончена установка ASP.NET (4.0.30319.33440).

Кот в сапогах
источник
2

Я попытался сделать aspnet_regiis в командной строке, но я получил ответ, что у меня нет прав администратора. Затем, после еще одного поиска в Google и поиска решения, я попытался щелкнуть правой кнопкой мыши cmd и запустить его от имени администратора. Подтвердил да, когда появился диалог, снова запустил aspnet_iis и муравей работал как чудо. Вкратце: 1. проверьте .NET framework в app_pool 2. запустите cmd от имени администратора 3. запустите aspnet_regiis -i

ива
источник
2

У меня была такая же проблема, и мое решение было:

Перейдите к разделу «Включение или отключение функций Windows»> Информационные службы Интернета> Службы всемирной паутины> Функции разработки приложений> Включить ASP.NET 4.5

Райан Бурбидж
источник
Это работает как очарование, но есть ли причина, по которой я не хотел бы делать это на рабочем сервере, учитывая, что это «функция разработки приложений»?
Филипп Стратфорд
Я недостаточно знаю об этой функции, чтобы прокомментировать ее использование в производственной среде. Однако я нашел эту ссылку, которая может быть полезна technet.microsoft.com/en-us/library/hh831475.aspx . Он также содержит команду, которую можно использовать для установки модулей IIS и ASP.NET через командную строку, которая может быть более подходящей для ваших производственных нужд.
Райан Бурбидж
1

У меня была похожая проблема с Windows Server 2012, установка функции « Сервер приложений » в диспетчере серверов устранила проблему.

user1255162
источник
1

-Использование функции инициализации приложения -запрос неправильных страниц (.asp) из-за наследования конфигурации

500.21 произойдет только при первом подключении пользователя. Последующие соединения работают.

Решено путем исправления коллекции url applicationInitialization на веб-сайте .NET.

SVL
источник
1
  1. запустить cmd

  2. перетащите Aspnet_regiis.exeв командную строку из:

    C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
  3. тип -i(например Aspnet_regiis.exe -i)

  4. нажмите ввод

  5. дождитесь завершения процесса

Удачи!

user11716116
источник
0

У меня возникла эта проблема, и я обнаружил, что удаление следующей папки помогло, даже с не-Express Edition. Express:

C:\Users\<user>\Documents\IISExpress

Томас Братт
источник
0

Ничто из этого не помогло мне. Поэтому, поскольку я сравнил различные пулы приложений с одним, который работал с тем, который не работал, мне пришлось перейти в Дополнительные настройки для пула приложений и установить

Включить 32-битные приложения = true

Тогда все работало нормально!

LarryBud
источник
0

У меня была такая же проблема, в моем случае обработчик был в двух местах:

<system.web>
...
<httpHandlers>
 <add verb="*" path="*.ashx" type="ApplicArt.Extranet2.Controller.FrontController, ApplicArt.Extranet2.Web.UI" />
  </httpHandlers>
</system.web>

<system.webServer>
<handlers>
   ...
  <add name="FrontController" verb="*" path="*.ashx" type="ApplicArt.Extranet2.Controller.FrontController, ApplicArt.Extranet2.Web.UI"/>
</handlers>
</system.webServer>

И когда я удалил свой обработчик из [system.webServer], моя проблема исчезла.

Веслав Олборски
источник
0

в некоторых случаях эта ошибка возникает из-за повреждения конфигурации Microsoft .NET Framework 4.0 для ASP .NET, что может произойти, если Microsoft Visual Studio 2012 была установлена ​​до Visual Studio 2010 или Microsoft SQL Server 2008.

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

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SetupCache\v4.5.51209\setup.exe /repair /x86 /x64 /ia64 /norestart

https://msdn.microsoft.com/en-us/library/hh168535(v=nav.80).aspx

sairfan
источник
0

Чтобы решить эту проблему, попробуйте восстановить .net Framework 4, а затем выполните команду

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

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

Набиль
источник
1
Вы прочитали все опубликованные ответы, прежде чем отправлять свои собственные?
М. Адель Халид
0

У меня была эта проблема на одном из моих веб-серверов при попытке переключить пул приложений с классического на интегрированный. Он отлично работал на двух других моих веб-серверах, а не только на этом. Это Server 2012, поэтому вы не можете выполнить aspnet_regiis, и не было папки setupcache, чтобы попытаться это исправить. Все было настроено правильно под особенности.

После прохождения% windir% \ system32 \ inetsrv \ config \ applicationHost.config я обнаружил один критический пропущенный бит. Под моим неработающим отсутствовали следующие две строки:

        <add name="ManagedEngineV4.0_32bit" image="C:\Windows\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
        <add name="ManagedEngineV4.0_64bit" image="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />

Как только я их добавил, все работало отлично.

Джейсон Багински
источник