500.21 Zły moduł „ManagedPipelineHandler” na liście modułów

83

Otrzymuję błąd:

Błąd HTTP 500.21 - program obsługi wewnętrznego błędu serwera „CloudConnectHandler” ma zły moduł „ManagedPipelineHandler” na liście modułów

mój plik web.config wygląda następująco:

<?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>

Istnieje wiele porad wskazujących, że asp.net nie jest poprawnie zainstalowany. Typowa poprawka to uruchomienie:

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

lub

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

Uruchomiłem oba bez błędów. Ponownie uruchomiłem usługi IIS, ale problem nadal występuje. Witryna korzysta z puli aplikacji. Pula aplikacji została uruchomiona, .NET Framework = 4.0, Managed Pipeline = Classic, Identity = LocalSystem.

Spędziłem ostatnie kilka godzin, próbując dowiedzieć się, w czym jest problem. Mam nadzieję, że ktoś może pomóc.

George Mastros
źródło

Odpowiedzi:

18

Spróbuj przełączyć się do trybu zintegrowanego. Zobacz następujący wątek:

IIS 7, HttpHandler i błąd HTTP 500.21

Radomir Zaric
źródło
Przełączyłem go na zintegrowany, co spowodowało inny błąd. Kiedy to naprawiłem, wszystko zaczęło działać poprawnie. Dziękuję Ci.
George Mastros
„Głos przeciw” za to. Miałem już włączony tryb zintegrowany. @Armaan odpowiada na to krótko, ale doskonale.
echology
Ta odpowiedź jest prawidłowa, rozwiązuje mój problem, użyłem NET 3.5 i otrzymałem błąd 500.21. przełączenie na tryb zintegrowany rozwiązało mój problem.
freedeveloper
185

Wykonaj następujące kroki:

1) Uruchom wiersz polecenia jako administrator.

2) Wpisz jedną z dwóch poniższych linii w wierszu polecenia:

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

lub

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Armaan
źródło
2
Witamy w SO i dziękuję za odpowiedź. Ta odpowiedź została oznaczona do sprawdzenia ze względu na jej zwięzłość. Chociaż twoja odpowiedź może być technicznie poprawna, można ją poprawić, dodając więcej tekstu, wyjaśniając, na czym polega podstawowy problem, który ma PO i dlaczego twoja odpowiedź działa.
Inżynier oprogramowania
8
tutaj jest więcej tekstu. bo to działa muhahahaha +1. Myślę, że prawdziwym powodem jest to, że jeśli najpierw zainstalujesz 4.5.1, a następnie włączysz do niego IIS, nie zostanie automatycznie rozpoznany. albo mam to w odwrotnej kolejności. tak czy inaczej. to zadziałało dla mnie
hubson bropa
To jest rozwiązanie!
alexroat
4
Buduję nowy serwer 2008 R2 (tak, w roku 2015) i najpierw zainstalowałem 4.5.x, a potem włączyłem IIS ... jak @hubsonBropa wspomniał w swoim komentarzu. To pomogło mi pokonać pierwszą z wielu przeszkód.
bkwdesign
Jeśli używasz .NET 4.5.x lub 4.6.x, nie daj się zwieść odpowiedziom wspominającym o 4.0 i myśl, że nie dotyczy Ciebie. Ten problem może być związany z kolejnością instalacji .NET przed IIS, tak jak to było u mnie. Uruchomienie polecenia (w moim przypadku wersji 64-bitowej) naprawiło problem, mimo że moja aplikacja korzysta z .NET 4.5.2.
Coxy
51

Wystąpił ten błąd w nowej kompilacji systemu Windows Server 2012 R2. Zainstalowano usługi IIS i .NET 4.5, ale rola serwera ASP.NET (w moim przypadku wersja 4.5) nie została dodana. Upewnij się, że wersja ASP.NET, której potrzebujesz, została dodana / zainstalowana, jak ASP.NET 4.5, na tym zrzucie ekranu.

Rola serwera ASP.NET

Jeremy Cook
źródło
Teraz jest ASP.NET 4.7 (Svr 2016)
bendecko
31

Aby rozwiązać problem, próbowałem uruchomić

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

Jednak to nie zadziałało dla mnie. Jako administrator muszę uruchomić inną linię poleceń w oknie CMD. Oto polecenie:

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

lub

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

Mam nadzieję, że to pomoże.

Lynn
źródło
To rozwiązało to również dla mnie w systemie Windows 10 Preview Build 10074 z IIS 10.
Shawn McGough
3
Polecenie DISM działało u mnie po usunięciu %od początku. Więc wpadłem: dism /online /enable-feature /featurename:IIS-ASPNET45 /all.
Schmalls
1
Działa na Windows Server 2016! Wielkie dzięki!
Adrian Księżarczyk
4

Ten błąd wystąpił w mojej aplikacji ASP.Net 4.5 w systemie Windows Server 2012 R2.

Przejdź do menu Start -> „Włącz lub wyłącz funkcje systemu Windows”. Pojawił się dla mnie czarodziej.

Kliknij przycisk obok ról serwera

Musiałem to sprawdzić, aby to zadziałało, znajdujące się w Web Server IIS-> Web Server-> Application Development (są one oparte na powyższej odpowiedzi Jeremy'ego Cooka):

wprowadź opis obrazu tutaj

Następnie kliknij obok opcji Funkcje i upewnij się, że są zaznaczone:

wprowadź opis obrazu tutaj

Następnie kliknij Dalej i Zainstaluj. W tym momencie błąd zniknął za mnie. Powodzenia!

Rudy Scoggins
źródło
3

Dzieje się tak, ponieważ usługi IIS 7 używają programów obsługi http z obu <system.web><httpHandlers>i <system.webServer><handlers>. jeśli potrzebujesz CloudConnectHandler w swojej aplikacji, powinieneś dodać <httpHandlers>sekcję z tym handlerem do <system.web>:

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

a także dodaj preConditionatrybut do handlera w <system.webServer>:

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

Mam nadzieję, że to pomoże

Jewgienij Gorb
źródło
2

U mnie otrzymywałem ten komunikat o błędzie podczas korzystania z PUTlub DELETEdo interfejsu WebAPI. Próbowałem również ponownie zarejestrować .NET Framework zgodnie z sugestią, ale bezskutecznie.

Udało mi się to naprawić, wyłączając WebDAV dla mojej indywidualnej puli aplikacji, co zatrzymało błąd „złego modułu” podczas używania PUTlub DELETE.

Wyłącz WebDAV dla indywidualnej puli aplikacji:

  1. Kliknij pulę aplikacji, których dotyczy problem
  2. Znajdź WebDAV Authoring Toolsna liście
  3. Kliknij, aby go otworzyć
  4. Kliknij Disable WebDAVw prawym górnym rogu.

Ten link to miejsce, w którym znalazłem instrukcje, ale nie jest to zbyt jasne.

Łukasz
źródło
1
Dokładnie mój problem. Put and Delete nie działało z włączonym WebDav. Dziękujemy za podzielenie się swoim odkryciem!
ilter
2

Miałem ten problem w systemie Windows 10, gdy potrzebowałem usług IIS zamiast IIS Express. Nowy projekt sieciowy nie powiódł się z powodu błędu OP. Naprawiono

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

zaznacz ASP.NET 4.7(w moim przypadku)

Neil Thompson
źródło
0

Miałem ten problem za każdym razem, gdy wdrażałem nową witrynę internetową lub aktualizowałem istniejącą za pomocą MSDeploy .

Udało mi się to naprawić, zwalniając domenę aplikacji za pomocą MSDeploy z następującą składnią:

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

Możesz także zatrzymać, uruchomić lub ponownie uruchomić pulę aplikacji - więcej szczegółów tutaj: http://technet.microsoft.com/en-us/library/ee522997%28v=ws.10%29.aspx

Chociaż rozwiązanie Armaana pomogło mi się uwolnić, nie spowodowało, że problem zniknął na stałe.

neoscribe
źródło
0

jeśli jest to IIS 8, przejdź do panelu sterowania, włącz / wyłącz funkcje systemu Windows i włącz nieprawidłową „Aktywację nazwanego potoku”, a następnie uruchom ponownie usługi IIS. Mam nadzieję, że to samo działa z usługami IIS 7

user3024678
źródło
-1

Odkryłem, że kolejność dodawania ról i funkcji jest ważna. Na nowym systemie aktywuję rolę "serwer aplikacji" i tam sprawdzam wyraźnie .net, obsługę serwera WWW i wreszcie usługę aktywacji procesu. Następnie automatycznie pojawia się dialog, że należy również dodać rolę "Serwer WWW".

Andreas Goretzky
źródło
-1

Zainstaluj .NET framework jak poniżej, będzie działać również .NET w wersji 4.5 .

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

Czasami tylko dawanie aspnet_regiis.exe -inie działa, więc poddaj się aspnet_regiis.exe -irpowyższej ścieżce.

Tarun Rathore
źródło