Обработчик "ExtensionlessUrlHandler-Integrated-4.0" имеет плохой модуль "ManagedPipelineHandler" в своем списке модулей



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



1) у меня есть ASP.NET приложение, которое имеет Preloader класс, который наследует IProcessHostPreloadClient и делает все тяжелые инициализации в предварительная загрузка реализация метода (приложение является сложным и является частью огромной системы, поэтому оно требуется приблизительно 2 минуты, чтобы установить соединения со всеми необходимыми службами и предварительно создать экземпляр некоторых регистраций Unity).



2) у меня есть много работы, которая должна быть выполнена при завершении работы приложения (отписка, отключение, удаление,...), и я думаю, что лучшее место, чтобы сделать это в *Application_End* метод, расположенный в глобальные.асакс.



3) Все работает просто отлично, когда у меня есть активность пользователя (первый запрос после пула приложений, который содержит вышеупомянутое веб-приложение запускается вызовет* Application_Start*, а затем * Application_End * вызывается при остановке или перезапуске пула приложений), но проблемы возникают, когда нет активности пользователя, и приложение пытается перезапустить себя после активации в течение 48 часов (настроенное требование). Поскольку не было никаких запросов, приложение официально не начиналось. Следовательно, он не может быть изящно остановлен, так как *Application_End* не будет вызван.



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



SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);


... и это сделало его целью. * Application_Start * был вызван (я проверил ответ, он содержал страницу входа, которая должна была отображаться в начальном запросе) и при завершении работы пула приложений приложение закончилось изящно, выполнив необходимую работу в * Application_End*.



но



после того, как приложение было запущено (предварительно загружено и инициировано) таким образом, это то, что произошло, когда я хотел добраться до приложения через веб-браузер:




ошибка HTTP 500.21-Внутренняя ошибка сервера
Обработчик "ExtensionlessUrlHandler-Integrated-4.0" имеет плохой модуль "ManagedPipelineHandler" в своем списке модулей




Я не могу в этом разобраться. Может кто-нибудь сказать мне, почему это происходит и как это исправить?



Если я не пойму этого, я вернусь к первому решению (отправка запроса GET из кода), но эта проблема будет меня беспокоить, так как я даже не знаю, что случилось.

1219   21  

21 ответов:

проблема

вы используете SimpleWorkerRequest в сценарии, для которого он не был предназначен. Вы используете его внутри IIS. Если вы посмотрите на предыдущую ссылку MSDN (акцент мой):

обеспечивает простую реализацию абстрактного класса HttpWorkerRequest, который может быть используется для размещения ASP.NET приложения вне приложения Internet Information Services (IIS). Вы можете использовать SimpleWorkerRequest непосредственно или расширить его.

кроме того, если вы посмотрите на документацию MSDN для

попробуйте перерегистрироваться ASP.NET с aspnet_regiis -i. Это сработало для меня.

вероятный путь для .NET 4 (из командной строки с повышенными привилегиями):

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

http://forums.iis.net/p/1190643/2026401.aspx

Если вы столкнулись с этой ошибкой в Windows 8 / Windows Server 2012 и .Net 4.5, выполните следующие инструкции здесь: http://www.britishdeveloper.co.uk/2013/01/handler-extensionlessurlhandler.html

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

Это работает для меня (хотя Мастер и формулировка это немного отличается в Windows Server 2012, но ты разберешься). С учетом сказанного, почему это необходимо после установки всего через установщик веб-платформы, включая все зависимости, полностью за пределами меня...

несмотря на то, что я следовал многим советам на этой странице, Я все еще получал проблемы на Windows Server 2012. Установка .NET Extensibility 4.5 (добавление ролей и компонентов > роли сервера > веб-сервер (IIS) > веб-сервер > разработка приложений > .NET Extensibility 4.5) решила эту проблему для меня.

выполнить одну из следующих команд :

для 32-битной ОС Windows:

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

для 64-битной ОС Windows:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -I

Это https://stackoverflow.com/a/13266763/1277458 работает отлично. Но если у вас есть 64-разрядная операционная система, используйте Framework64 вместо Framework в path:

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

на Windows 10 / Windows Server 2016 используйте следующую команду:

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

предложенные ответы с aspnet_regiis не работает в Windows 10 (Creators Update и более поздние версии) или Windows Server 2016:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -я
Microsoft (R) ASP.NET RegIIS версия 4.0.30319.0
Утилита администрирования для установки и удаления ASP.NET на местном машина.
Авторское Право (C) Корпорация Майкрософт. Все права защищены.
Начать установку ASP.NET (4.0.30319.0).
этот параметр не поддерживается в данной версии операционной системы. Вместо этого администраторы должны установить / удалить ASP.NET 4.5 с помощью IIS8 с помощью диалогового окна "включение/выключение компонентов Windows", средства управления Диспетчер серверов или dism.инструмент командной строки exe-файла. для получения более подробной информации см. http://go.microsoft.com/fwlink/?LinkID=216771.
Законченная установка ASP.NET (4.0.30319.0).

интересно, что диалоговое окно "включение/выключение функций Windows" не позволило мне снять флажок .NET или ASP.NET 4.6, и только вышеуказанная команда DISM работала. Не уверен, что ли имя_компонента правильно, но это сработало для меня.

в моем случае (Windows 10 + IIS 10) мне пришлось открыть "включение и выключение функций Windows", а затем перейти к интернет-информационные услуги > мировой паутине услуг > особенности разработки приложений > и ASP.NET 4.6

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

Я видел, может быть, дюжину подобных сообщений здесь и в других местах об этой проблеме и исправлении aspnet_regiis. Они не работали на меня, и aspnet_regiis действовал странно, просто перечисляя варианты и т. д.

как пользователь Райан-Андерсон выше указано, вы не можете войти .exe

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

  1. найти aspnet_regiis в папке, похожей на этот путь. c:\Windows\Microsoft.NET\Framework\v4.0.30319\

  2. щелкните правой кнопкой мыши командную строку в меню Пуск или где бы то ни было и скажите, чтобы она запускалась от имени администратора. Использование функции "запуск" windows просто не будет работать, или не для меня.

  3. вернитесь к исполняемому файлу aspnet_regiis. Нажмите и перетащите его прямо в командной строке или скопируйте и вставьте адрес в командная строка.

  4. удалить ,если он там, то.exe в конце концов. Это ключ. Добавьте-i (пробел минус глаз) в конце. Входить.

Если вы сделали это правильно, вы увидите, что он начинает устанавливать asp.net, а потом говорит вам, что это удалось.

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

пользователи Powershell могут ввести "Install-WindowsFeature Web-Asp-Net45"

Это должно быть эквивалентно использованию диспетчера сервера.

убедитесь, что вы установили свой application-site версию v2.0 to v4.0 на диспетчер IIS:

пулы приложений > ваше приложение > Дополнительные параметры > версия .NET Framework

после этого, установить ASP.NET.

для 32-разрядной ОС (Windows):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -я

для 64-разрядной ОС (Windows):

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -я

перезагрузка application-site в Диспетчере IIS и наслаждайтесь.

Я был оспорен тем же сообщением об ошибке, с .net 4.7 установлен.

решение состояло в том, чтобы следовать одному ранее упомянутому сообщению, чтобы пойти с "Включить или выключить функцию Windows", где ".NET Framework 4.7 Advanced Services" -- > "ASP.NET 4.7" уже была проверена.

далее по списку, есть "интернет информационные услуги" и подзаголовок "особенности разработки приложений" -- > "ASP.NET 4.7", что также необходимо проверить.

когда при включении этой функции включаются другие функции... Я просто нажал кнопку Ok, и проблема была решена. Screendump диалогового окна функций windows

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

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

эта ошибка начала происходить со мной из ниоткуда на прошлой неделе, влияя на существующие веб-сайты на моей машине. Мне не повезло с этим, пытаясь любой из предложений здесь. В конце концов я полностью удалил WebDAV из IIS (Windows Features -> Internet Information Services -> World Wide Web Services -> Common HTTP Features -> WebDAV Publishing). Я сделал сброс IIS после этого для хорошей меры, и моя ошибка была, наконец, решена.

Я могу только догадываться, что началось обновление для Windows вопрос, но я не могу быть уверен.

Я работаю на Windows Server 2012. Включена функция .NET Extensibility 4.5. WebDAVModule удален. Я все еще получал ошибку 500.21 ASP.NET маршрут '/ docs'.

изменение 'skipManagedModules' на false исправило проблему.

<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
        <add initializationPage="/docs" />    
</applicationInitialization>

спасибо https://groups.google.com/forum/#! topic/bonobo-git-server/GbdMXdDO4tI

вы можете исправить это, изменив тип "ExtensionlessUrlHandler-Integrated-4.0" в iis на System.Сеть.DefaultHttpHandler

для меня удаление WebDAV с моего сервера привело к тому, что приложение вернуло 503 Service Unavailable сообщение об ошибке при использовании PUT или DELETE, поэтому я снова установил его обратно. Я также попытался полностью удалить .NET Framework 4.5 и переустановить его, а также попытался перерегистрироваться, как было предложено, но безрезультатно.

я смог это исправить, отключив WebDAV для отдельные пул приложений, это остановило ошибку "плохой модуль" при использовании PUT или DELETE.

отключить WebDAV для отдельного пула приложений:

  1. нажмите на приложение бассейн
  2. найти WebDAV Authoring Tools в списке
  3. Нажмите, чтобы открыть его
  4. клик Disable WebDAV в правом верхнем углу.

даааа та!

Я все еще оставил удалить элементы в моем .

 <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
    </handlers>
 <system.webServer>

этой ссылке где я нашел инструкции, но не очень понятно.

это, возможно, не полезное решение для OP, но оно касается того же сообщения об ошибке.

мы размещаем PHP страницы на IIS8.5 с .NET 4.5 установлен правильно.

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

через некоторое время мы начали получать эту ошибку случайно.

в интернете.config: я поставил skipManagedModules в true, - > не делать это!

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
<applicationInitialization skipManagedModules="false" doAppInitAfterRestart="true">
  <add initializationPage="/" />
</applicationInitialization>
...

хотя сайт является php, маршрутизация на подкачку управляется модулями!!!

Я тоже столкнулся с этой проблемой. Мое приложение MVC4 работает на Windows Server 2012 R2 с IIS 8.5. Ни одно из этих опубликованных решений не работало для меня...установка отсутствующих фреймворков через функции IIS могла бы решить эту проблему, но установка всегда терпела неудачу.

Я должен был использовать Web Platform Installer и установил следующие пакеты:

enter image description here

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

на панели управления хостинг-провайдера я включил ведение журнала ошибок для IIS и ASP.Net. а потом узнал, что ошибка на самом деле лежала в отсутствующем cshtml.

Я решил эту проблему, добавив в "Включить или выключить функции Windows" опция ASP.NET 4.7

Comments

    Ничего не найдено.