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 відповідає на це коротко, але чудово.
ехологія

Ця відповідь вірна, вона вирішує мою проблему, я використав NET 3.5 і отримав помилку 500.21. перехід на інтегрований режим вирішив мою проблему.
вільний розробник

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 та дякуємо за вашу відповідь. Ця відповідь була позначена для перевірки через стислість. Незважаючи на те, що ваша відповідь може бути технічно правильною, її можна покращити додатковим текстом, пояснивши, в чому полягає основна проблема, що виникає в ОП, і чому ваша відповідь працює.
Інженер-програміст,

8
ось ще текст. тому що це працює muhahahaha +1. Я думаю, що справжня причина полягає в тому, що спочатку ви встановлюєте 4.5.1, а потім наклеюєте IIS, і він не розпізнає автоматично. або я маю це у зворотному порядку. в будь-якому випадку. це спрацювало для мене
hubson bropa

Це рішення!
алексрут

4
Я будую новий сервер R2 2008 (так, у 2015 році), і я спочатку встановив 4.5.x, а потім застряг IIS .. як, наприклад, @hubsonBropa, згаданий у його коментарі. Це подолало мене першу з багатьох перешкод.
bkwdesign

Якщо ви використовуєте .NET 4.5.x або 4.6.x, не обманюйте себе відповіддю із згадкою 4.0 і думайте, що це не стосується вас. Ця проблема може бути пов'язана з порядком встановлення .NET до IIS, як це було для мене. Запуск команди (у моєму випадку 64-розрядної версії) виправив її, навіть якщо моя програма використовує .NET 4.5.2.
Коксі

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 (квіт. 2016 р.)
Bendecko,

31

Щоб вирішити проблему, я спробував запустити

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

Однак у мене це не спрацювало. Мені потрібно запустити ще один командний рядок у вікні CMD як адміністратор. Ось команда:

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

або

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

Сподіваюся, це допоможе.


Це вирішило це для мене також у Windows 10 Preview Build 10074 with IIS 10.
Shawn McGough

3
Команда dism спрацювала у мене після видалення %з самого початку. Так що я побіг: dism /online /enable-feature /featurename:IIS-ASPNET45 /all.
Шмальлс

1
Працює на Windows Server 2016! Дуже дякую!
Адріан Ксенжарчик,

4

Я отримав цю помилку в моїй програмі ASP.Net 4.5 на Windows Server 2012 R2.

Перейдіть до меню «Пуск» -> «Увімкнути або вимкнути функції Windows». Для мене з’явився майстер.

Клацніть Далі на Ролі сервера

Мені довелося перевірити їх, щоб це запрацювало, розташоване в Web Server IIS-> Web Server-> Application Development (вони базуються на відповіді Джеремі Кука вище):

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

Потім натисніть поруч із пунктом Функції та переконайтеся, що встановлено:

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

Потім натисніть далі і встановіть. На даний момент помилка для мене зникла. Удачі!


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
Моя проблема точно. Put і Delete не працювали з увімкненим 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

Незважаючи на те, що рішення Армаана допомогло мені зникнути, це не змусило проблему зникнути назавжди.


0

якщо це IIS 8, перейдіть на панель керування, увімкніть / вимкніть функції Windows і ввімкніть Погана «Активація іменованої труби», а потім перезапустіть IIS. Сподіваюся, те саме працює з IIS 7


-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вище.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.