Jak naprawić: Program obsługi „PageHandlerFactory-Integrated” ma zły moduł „ManagedPipelineHandler” na liście modułów

543

Konfiguruję projekt MVC 3 do pracy na lokalnej instalacji IIS i napotkałem następujący błąd 500:

Program obsługi „PageHandlerFactory-Integrated” ma zły moduł „ManagedPipelineHandler” na liście modułów.

Okazuje się, że dzieje się tak, ponieważ ASP.Net nie został całkowicie zainstalowany z IIS, mimo że zaznaczyłem to pole w oknie dialogowym „Dodaj funkcję”. Aby to naprawić, po prostu uruchomiłem następujące polecenie w wierszu polecenia

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

Gdybym był na systemie 32-bitowym, wyglądałoby to tak:

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

Moje pytanie brzmi: czy jest sposób na zainstalowanie IIS na komputerze z systemem Windows 7, aby móc korzystać z .NET 4.0 (MVC 3) bez wykonywania tego dodatkowego kroku?

hspain
źródło
2
Pytanie faktycznie rozwiązało mój problem. Gdybym mógł, odpowiedziałbym na pytanie jako odpowiedź. :)
Seregwethrin
Tak, opis pytania rozwiązał również mój problem. Dzięki :-)
sramsay

Odpowiedzi:

950

Okazuje się, że dzieje się tak, ponieważ ASP.Net nie został całkowicie zainstalowany z IIS, mimo że zaznaczyłem to pole w oknie dialogowym „Dodaj funkcję”. Aby to naprawić, po prostu uruchomiłem następujące polecenie w wierszu polecenia

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

Gdybym był na systemie 32-bitowym, wyglądałoby to tak:

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

Pamiętaj, aby uruchomić wiersz polecenia jako administrator ( CTRL+ SHIFT+ ENTER)

hspain
źródło
Być może „Aspnet_regiis.exe nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy”. błąd. W tym przypadku jesteś plikiem wykonywalnym nie z folderu .NET 4.0, ale z folderu 2.0 (patrz moja odpowiedź poniżej)
Nikita G.
W niektórych witrynach przeczytałem, że musimy uruchomić aspnet_regiis.exe, ale żaden nie wyjaśnił, że parametr jest wymagany, w przeciwnym razie nic się nie stanie.
Pimenta
świetna prosta odpowiedź. Wiedziałem, że to zła instalacja, nie wiedziałem, jak to naprawić.
elcool,
Pamiętaj, że jeśli używasz systemu Windows Server 2012, musisz to zrobić w Zarządzaj> Dodaj role i funkcje> Funkcje. W moim przypadku IIS8 musiał mieć zainstalowany / aktywowany program ASP.NET 4.5.
Stark
5
pamiętaj, aby uruchomić jako administrator
Reid Evans,
17

Akceptowana odpowiedź jest poprawna, jednak czasami pojawia się komunikat „ Aspnet_regiis.exe nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.

Aby rozwiązać problem, spróbuj wykonać następujące czynności:

  1. Upewnij się, że instalacja .NET 4.0 nie jest uszkodzona (uruchom instalator i „Napraw”). Istnieje również szansa, że ​​w ogóle nie jest zainstalowany na twoim komputerze.

  2. Jeśli masz pewność, że nie masz .NET 4.0 i chcesz go uruchomić jako .NET 2.0, spróbuj tego :

Jeśli zobaczysz komunikat „Aspnet_regiis.exe nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.”, Przejdź do C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Aspnet_regiis.exe -i w wierszu polecenia.

Nikita G.
źródło
Aspnet_regiis.exe -i naprawił mój problem na Win Server 2008 IIS7.
VSB
9

Aby rozwiązać problem, spróbuj, repair the .net framework 4a następnie uruchom polecenie

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
Szach w persji
źródło
9

Błąd: moduł obsługi „PageHandlerFactory-Integrated” ma zły moduł „ManagedPipelineHandler” na liście modułów

Znalazłem artykuły, aby rozwiązać ten problem, po prostu uruchamiając następujące polecenia w wierszu polecenia:

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

Jeśli system jest 32-bitowy, wyglądałby tak:

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

Ale kiedy próbowałem wykonać te polecenia za pomocą wiersza polecenia, otrzymałem następujący komunikat o błędzie / ostrzeżeniu:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis.exe -i Microsoft (R) ASP.NET RegIIS wersja 4.0.30319.33440 Narzędzie administracyjne do instalowania i odinstalowywania ASP.NET na komputerze lokalnym. Prawa autorskie (C) Microsoft Corporation. Wszelkie prawa zastrzeżone. Rozpocznij instalację programu ASP.NET (4.0.30319.33440). Ta opcja nie jest obsługiwana w tej wersji systemu operacyjnego. Administratorzy powinni zamiast tego zainstalować / odinstalować program ASP.NET 4.5 z IIS8 za pomocą okna dialogowego „Włączanie / wyłączanie funkcji systemu Windows”, narzędzia zarządzania Menedżera serwera lub narzędzia wiersza poleceń. Aby uzyskać więcej informacji, zobacz http://go.microsoft.com/fwlin k /? LinkID = 216771. Zakończono instalację ASP.NET (4.0.30319.33440). **

Aby rozwiązać ten problem w systemie Windows 8.1, sugeruję wykonanie następujących czynności.

Rozwiązanie:

Idź: Włącz lub wyłącz funkcje systemu Windows -> Internetowe usługi informacyjne -> Usługi WWW -> Funkcje tworzenia aplikacji -> Włącz ASP.NET 4.5

To powinno rozwiązać problem.

Shubham Gupta
źródło
Miałem ten sam problem. Dzięki! Dla mnie musiałem włączyć „ASP.NET 4.6”.
Jenny O'Reilly,
4

Chciałbym również sprawdzić oczywiste pierwsze: że pula aplikacji jest ustawiona na poprawną strukturę i że twoja aplikacja IIS faktycznie wskazuje folder, w którym umieszczasz swoje pliki

BornToCode
źródło
Tak oczywiste ... ale tak łatwe do przeoczenia. Dzięki!
Paul Lemke,
To był dla mnie problem. Najwyraźniej jakoś to rozbroiłem lub ustawiono na „Brak zarządzanego kodu”. Przełączenie go z powrotem do wersji 4.0 spowodowało załadowanie mojej witryny.
redOctober13
3

Jeśli chcesz wdrożyć aplikację MVC bez instalowania MVC, możesz wdrożyć biblioteki DLL MVC wraz z aplikacją . Pomaga to w instalacji MVC 3. Można używać funkcji w niektórych przestrzeniach nazw .Net 4.0 bez instalowania .Net przy użyciu podobnego podejścia.

David Veksler
źródło
4
rejestracja asp.net w iis nie ma nic wspólnego z obecnością lub brakiem mvc, tak, możesz zawrzeć wymagane dll w folderze bin, ale jeśli iis nie rozpoznaje plików asp, to niewiele może zrobić dll
Shekhar
3

Dodałem ścieżki ISAPI / CGI dla .Net 4. Które nie rozwiązało problemu. Następnie uruchomiłem naprawę instalacji .Net V4 (Client i Extended). Który poprosił o ponowne uruchomienie. Naprawiłem to dla mnie.

Kent
źródło
2

Aby to naprawić w komputerze systemem Windows 8.1 Professional , wykonaj następujące czynności.

  1. Zainstaluj instalator platformy internetowej. http://www.microsoft.com/web/downloads/platform.aspx

  2. W Instalatorze platformy internetowej zainstaluj program ASP.NET 4.5 (ta funkcja ma jedną zależność).

Jeśli po prostu wypróbujesz wyżej wymienione polecenie cmd z najpopularniejszej odpowiedzi, otrzymasz następujący komunikat o błędzie / ostrzeżeniu:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis.exe -i Microsoft (R) ASP.NET RegIIS wersja 4.0.30319.33440 Narzędzie administracyjne do instalowania i odinstalowywania ASP.NET na komputerze lokalnym. Prawa autorskie (C) Microsoft Corporation. Wszelkie prawa zastrzeżone. Rozpocznij instalację programu ASP.NET (4.0.30319.33440). Ta opcja nie jest obsługiwana w tej wersji systemu operacyjnego . Administratorzy powinni zamiast tego zainstalować / odinstalować program ASP.NET 4.5 z IIS8 za pomocą okna dialogowego „Włącz / wyłącz funkcje systemu Windows”, narzędzia do zarządzania Menedżera serwera lub narzędzia wiersza poleceń. Aby uzyskać więcej informacji, zobacz http://go.microsoft.com/fwlin k /? LinkID = 216771. Zakończono instalację ASP.NET (4.0.30319.33440).

Kot w butach
źródło
2

Próbowałem wykonać polecenie aspnet_regiis w wierszu polecenia, ale otrzymałem odpowiedź, że nie mam uprawnień administratora. Następnie, po trochę googlingu i szukaniu rozwiązania, spróbowałem kliknąć prawym przyciskiem myszy cmd i uruchomić go jako administrator. Potwierdzono tak, kiedy pojawiło się okno dialogowe, ponownie uruchomiono aspnet_iis mrówka działała jak urok. W skrócie: 1. sprawdź .NET Framework w app_pool 2. uruchom cmd jako administrator 3. uruchom aspnet_regiis -i

Wierzba
źródło
2

Miałem ten sam problem, a moim rozwiązaniem było:

Wybierz „Włączanie lub wyłączanie funkcji systemu Windows”> Internetowe usługi informacyjne> Usługi WWW> Funkcje tworzenia aplikacji> Włącz ASP.NET 4.5

Ryan Burbidge
źródło
Działa to jak urok, ale czy jest jakiś powód, dla którego nie chciałbym tego robić na serwerze produkcyjnym, biorąc pod uwagę, że jest to „funkcja programowania aplikacji”?
Philip Stratford,
Nie wiem wystarczająco dużo o tej funkcji, aby skomentować użycie jej w środowisku produkcyjnym. Jednak znalazłem ten link, który może być pomocny technet.microsoft.com/en-us/library/hh831475.aspx . Zawiera także polecenie, którego można użyć do zainstalowania modułów IIS i ASP.NET za pomocą wiersza polecenia, co może być lepiej dostosowane do potrzeb produkcyjnych.
Ryan Burbidge
1

Miałem podobny problem z Windows Server 2012, naprawiłem ten problem , instalując funkcję „ Serwer aplikacji ” w menedżerze serwerów.

użytkownik1255162
źródło
1

-Używanie funkcji inicjowania aplikacji -wymaganie błędnych stron (.asp) z powodu dziedziczenia konfiguracji

500.21 wystąpi tylko przy pierwszym połączeniu użytkownika. Kolejne połączenia działają.

Rozwiązane przez poprawienie kolekcji url applicationInitialization w witrynie .NET.

svl
źródło
1
  1. biegać cmd

  2. przeciągnij i upuść Aspnet_regiis.exew wierszu polecenia z:

    C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
  3. typ -i(na przykład Aspnet_regiis.exe -i)

  4. wciśnij Enter

  5. poczekaj, aż proces się zakończy

Powodzenia!

użytkownik11716116
źródło
0

Miałem ten problem i stwierdziłem, że usunięcie następującego folderu pomogło, nawet w przypadku edycji innej niż Express.

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

Thomas Bratt
źródło
0

Żadne z tych nie działało dla mnie. Porównując różne pule aplikacji z jedną, która działała, a drugą, która nie działała, musiałem przejść do Ustawień zaawansowanych dla puli aplikacji i ustawić

Włącz aplikacje 32-bitowe = prawda

Potem działało dobrze!

LarryBud
źródło
0

Miałem ten sam problem, w moim przypadku moduł obsługi był w dwóch miejscach:

<system.web>
...
<httpHandlers>
 <add verb="*" path="*.ashx" type="ApplicArt.Extranet2.Controller.FrontController, ApplicArt.Extranet2.Web.UI" />
  </httpHandlers>
</system.web>

<system.webServer>
<handlers>
   ...
  <add name="FrontController" verb="*" path="*.ashx" type="ApplicArt.Extranet2.Controller.FrontController, ApplicArt.Extranet2.Web.UI"/>
</handlers>
</system.webServer>

A kiedy usunąłem program obsługi z [system.webServer], mój problem zniknął.

Wiesław Olborski
źródło
0

w niektórych scenariuszach ten błąd występuje, ponieważ konfiguracja Microsoft .NET Framework 4.0 dla ASP .NET została uszkodzona, co może wystąpić, jeśli Microsoft Visual Studio 2012 został zainstalowany przed Visual Studio 2010 lub Microsoft SQL Server 2008.

Po wypróbowaniu różnych rzeczy doszedłem do wniosku, napraw instalację .Net, uruchamiając następujące polecenie. Aby uzyskać więcej informacji, kliknij link.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SetupCache\v4.5.51209\setup.exe /repair /x86 /x64 /ia64 /norestart

https://msdn.microsoft.com/en-us/library/hh168535(v=nav.80).aspx

sairfan
źródło
0

Aby rozwiązać problem, spróbuj naprawić platformę .net 4, a następnie uruchom polecenie

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

wprowadź opis zdjęcia tutaj

Nabeel
źródło
1
Czy przeczytałeś wszystkie zamieszczone odpowiedzi przed opublikowaniem własnych?
M. Adeel Khalid
0

Miałem ten problem na jednym z moich serwerów sieciowych, gdy próbowałem zmienić aplikację z klasycznej na zintegrowaną. Działa dobrze na dwóch moich innych serwerach WWW, nie tylko na tym. Jest Server 2012, więc nie możesz wykonać aspnet_regiis i nie było folderu setupcache, aby spróbować naprawić. Wszystko zostało ustawione poprawnie w ramach funkcji.

Po przejściu przez% windir% \ system32 \ inetsrv \ config \ applicationHost.config znalazłem jeden krytyczny brakujący bit. Pod moim niedziałającym brakowało dwóch następujących wierszy:

        <add name="ManagedEngineV4.0_32bit" image="C:\Windows\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
        <add name="ManagedEngineV4.0_64bit" image="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />

Po ich dodaniu wszystko działało świetnie.

Jason Bagiński
źródło