500.21 Плохой модуль ManagedPipelineHandler в списке модулей

83

Я получаю сообщение об ошибке:

Ошибка HTTP 500.21 - Внутренний обработчик ошибок сервера CloudConnectHandler имеет неверный модуль ManagedPipelineHandler в списке модулей.

мой файл web.config выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="CloudConnectHandler" verb="*" path="CloudConnect.aspx" type="CloudConnectHandler" resourceType="Unspecified" />
    </handlers>
  </system.webServer>
  <system.web>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.0" batch="false">
      <assemblies>
        <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
    </compilation>
    <pages>
      <controls>
        <add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
      </controls>
    </pages>
        <identity impersonate="true" />
        <authentication mode="Forms" />
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v4.0" />
        <providerOption name="WarnAsError" value="false" />
      </compiler>
    </compilers>
  </system.codedom>
  <appSettings>
    <add key="CloudConnectAuthorization" value="xxxx" />
    <add key="ConnectionInfo" value="xxxx" />
    <add key="ConnectionString" value="xxxx" />
    <add key="DefaultChannel" value="xxxx" />
    <add key="LoginValidationConnectionString" value="xxxx" />
  </appSettings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="protobuf-net" publicKeyToken="257b51d87d2e4d67" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.640" newVersion="2.0.0.640" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Существует множество советов, указывающих на то, что asp.net установлен неправильно. Обычное исправление - запустить:

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

или же

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

Я запустил оба без ошибок. Я перезапустил IIS, но проблема не исчезла. Сайт использует пул приложений. Пул приложений запущен, .net framework = 4.0, Managed Pipeline = Classic, Identity = LocalSystem.

Последние пару часов я потратил, пытаясь понять, в чем проблема. Я надеюсь, что кто-нибудь может помочь.

Джордж Мастрос
источник

Ответы:

18

Попробуйте перейти в интегрированный режим. См. Следующую ветку:

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

Радомир Зарич
источник
Я переключил его на интегрированный, что вызвало другую ошибку. Как только я это исправил, все стало работать нормально. Спасибо.
Джордж Мастрос,
"Голосовать против" за это. У меня уже был включен интегрированный режим. @Armaan отвечает кратко, но прекрасно.
echology 02
Этот ответ действителен, он решает мою проблему, я использовал NET 3.5 и получил ошибку 500.21. переход в интегрированный режим решил мою проблему.
freedeveloper
185

Пожалуйста, выполните следующие действия:

1) Запустите командную строку от имени администратора.

2) Введите в командной строке одну из двух строк ниже:

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

или же

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Армаан
источник
2
Добро пожаловать в SO и спасибо за ваш ответ. Этот ответ был помечен для просмотра из-за его краткости. Хотя ваш ответ может быть технически правильным, его можно улучшить, добавив еще текст, объясняющий, в чем заключается основная проблема OP и почему ваш ответ работает.
Инженер-программист,
8
вот еще текст. потому что это работает мухахахаха +1. Я думаю, настоящая причина в том, что если вы сначала устанавливаете 4.5.1, а затем вставляете IIS, он автоматически не распознает правильность. или у меня это в обратном порядке. так или иначе. это сработало для меня
hubson bropa
Это решение!
Alexroat
4
Я создаю новый сервер 2008 R2 (да, в 2015 году), и сначала я установил 4.5.x, а потом вставил IIS ... как @hubsonBropa, упомянутый в его комментарии. Это помогло мне преодолеть первое из многих препятствий.
bkwdesign 04
Если вы используете .NET 4.5.x или 4.6.x, не дайте себя обмануть ответом, в котором упоминается версия 4.0 и который не относится к вам. Эта проблема может быть связана с порядком установки .NET до IIS, как это было у меня. Выполнение команды (в моем случае 64-битная версия) исправило ее, хотя мое приложение использует .NET 4.5.2.
Coxy
51

Я столкнулся с этой ошибкой в ​​свежей сборке Windows Server 2012 R2. IIS и .NET 4.5 были установлены, но роль сервера ASP.NET (версия 4.5 в моем случае) не была добавлена. Убедитесь, что нужная вам версия ASP.NET была добавлена ​​/ установлена, как ASP.NET 4.5 на этом снимке экрана.

Роль сервера ASP.NET

Джереми Кук
источник
Теперь это ASP.NET 4.7 (Svr 2016)
bendecko 01
31

Чтобы решить проблему, я попытался запустить

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

Однако у меня это не сработало. Мне нужно запустить другую командную строку в окне CMD от имени администратора. Вот команда:

DISM / онлайн / включить-функцию / имя: IIS-ASPNET45

или же

DISM / онлайн / включить-функцию / имя: IIS-ASPNET45 / все

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

Линн
источник
Это решило эту проблему и для меня в Window 10 Preview Build 10074 с IIS 10.
Шон Макго,
3
Команда DISM сработала у меня после удаления %с самого начала. Так что я побежал: dism /online /enable-feature /featurename:IIS-ASPNET45 /all.
Schmalls
1
Работает на Windows Server 2016! Большое спасибо!
Адриан Ксенжарчик
4

Я получил эту ошибку в своем приложении ASP.Net 4.5 на Windows Server 2012 R2.

Перейдите в меню «Пуск» -> «Включение или отключение функций Windows». Ко мне подошел волшебник.

Щелкните Next to Server Roles

Мне пришлось проверить их, чтобы заставить это работать, расположенный в разделе Веб-сервер IIS-> Веб-сервер-> Разработка приложений (они основаны на ответе Джереми Кука выше):

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

Затем щелкните рядом с «Возможности» и убедитесь, что отмечены следующие флажки:

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

Затем нажмите «Далее» и «Установить». На этом этапе ошибка исчезла для меня. Удачи!

Руди Скоггинс
источник
3

Это связано с тем, что IIS 7 использует обработчики http как от, так <system.web><httpHandlers>и от <system.webServer><handlers>. если вам нужен CloudConnectHandler в вашем приложении, вам следует добавить <httpHandlers>раздел с этим обработчиком в <system.web>:

<httpHandlers>
    <add verb="*" path="CloudConnect.aspx" type="CloudConnectHandler" />
</httpHandlers>

а также добавить preConditionатрибут в обработчик в <system.webServer>:

<handlers>
  <add name="CloudConnectHandler" verb="*" path="CloudConnect.aspx" type="CloudConnectHandler" preCondition="integratedMode" />
</handlers>

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

Евгений Горб
источник
2

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

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

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

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

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

Люк
источник
1
Моя проблема. Помещение и удаление не работали с включенным WebDav. Спасибо, что поделились своим открытием!
ilter
2

У меня была эта проблема в Windows 10, когда мне понадобился IIS вместо IIS Express. Новый веб-проект завершился ошибкой OP. Исправление было

Control Panel > Turn Windows Features on or off > Internet Information Services > World Wide Web Services > Application Development Features

галочка ASP.NET 4.7(в моем случае)

Нил Томпсон
источник
0

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

Мне удалось исправить это, выгрузив домен приложения с помощью MSDeploy со следующим синтаксисом:

msdeploy.exe -verb:sync -source:recycleApp -dest:recycleApp="Default Web Site/myAppName",recycleMode=UnloadAppDomain

Вы также можете остановить, запустить или перезапустить пул приложений - подробнее здесь: http://technet.microsoft.com/en-us/library/ee522997%28v=ws.10%29.aspx

Хотя решение Armaan помогло мне разобраться, проблема не исчезла навсегда.

неописывать
источник
0

если это IIS 8, перейдите в панель управления, включите / выключите функции Windows и включите «Плохая активация именованного канала», затем перезапустите IIS. Надеюсь, то же самое работает с IIS 7

user3024678
источник
-1

Я обнаружил, что порядок добавления ролей и функций важен. В новой системе я активирую роль «сервер приложений» и там явно проверяю .net, поддержку веб-сервера и, наконец, процесс активации службы. Затем автоматически появляется диалог о том, что роль «веб-сервер» также необходимо добавить.

Андреас Горецки
источник
-1

Установите .NET framework, как показано ниже, он также будет работать с .NET версии 4.5 .

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

Некоторое время только дать aspnet_regiis.exe -iне работать, поэтому уступите aspnet_regiis.exe -irуказанному пути.

Tarun Rathore
источник