Подтвердить что ты не робот

IIS 7, HttpHandler и HTTP Ошибка 500.21

В IIS 7 я пытаюсь использовать пользовательский HttpHandler для своего веб-приложения ASP.NET. Я использую режим конвейера "classic", версия .NET 4.0.30319, моя конфигурация web.config для обработчика:

<system.webServer>
<handlers>
    <add name="MyHandler" path="*.myExtension" verb="*" type="Company.App.UI.Controls.MyHandler, Company.App.UI" resourceType="Unspecified" />
</handlers>
</system.webServer> 

Когда я вызываю этот обработчик, я получаю эту ошибку:

HTTP Error 500.21 - Internal Server Error
Handler "MyHandler" has a bad module "ManagedPipelineHandler" in its module list

Я сделал поиск в Google, большинство людей исправили эту проблему, перерегистрировав ASP.NET командой aspnet_regiis.exe/i, но для меня это не (команда завершает, Я перезапускаю IIS, но ту же ошибку). Я попробовал это на двух разных серверах, но получил тот же результат.

Что еще я должен попробовать? Спасибо вам

4b9b3361

Ответ 1

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

Подробнее о модулях, обработчиках и режимах IIS вы можете узнать в следующем сообщении в блоге:

IIS 7.0, ASP.NET, конвейеры, модули, обработчики и предварительные условия

Для обработчиков, если вы установите preCondition = "integMode" в  отображение, обработчик будет работать только в интегрированном режиме. На с другой стороны, если вы установите preCondition = "classicMode", обработчик будет работает только в классическом режиме. И если вы опустите оба из них, обработчик может работать в обоих режимах, хотя это невозможно для управляемого Обработчик.

Ответ 2

К счастью, его очень легко решить. Выполните следующую команду из командной строки с повышенными правами:

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

Если вы используете 32-разрядную машину, вам может потребоваться следующее:

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

Ответ 3

У меня была такая же проблема, и я решил ее запустить, выполнив следующую команду

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

Ответ 4

У меня была такая же проблема, и я просто решил ее. Я написал собственный вопрос о stackoverflow:

Невозможно выполнить PUT для моего IHttpHandler, GET отлично работает

Решением было установить runManagedModulesForWebDavRequests в true в элементе modules. Я предполагаю, что после установки WebDAV все запросы PUT связаны с ним. Если вам нужно, чтобы PUT перешел к вашему обработчику, вам нужно удалить модуль WebDAV и установить для этого атрибута значение true.

<modules runManagedModulesForWebDavRequests="true">
...
</modules>

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

Ответ 5

Одно из решений, которое я нашел, - это то, что вам нужно будет изменить .Net Framework на v2.0, нажав правой кнопкой мыши на сайте, на котором у вас есть менеджер в пулах приложений, из настроек предварительного доступа.

Ответ 6

На сервере Windows 2016 я использовал:

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

Также можно выполнить через Powershell:

Install-WindowsFeature .NET-Framework-45-Features