Błąd HTTP 500.19 i kod błędu: 0x80070021

219

Mam prostą kompilację webAPI autorstwa Visual Studio 2013. Działa dobrze, kiedy uruchamiam ją z VS13, ale kiedy kopiuję projekt w lokalnych usługach IIS, pojawia się następujący błąd.

Błąd HTTP 500.19 - Wewnętrzny błąd serwera Nie można uzyskać dostępu do żądanej strony, ponieważ powiązane dane konfiguracyjne strony są nieprawidłowe.

Szczegółowe informacje o błędzie:

Moduł IIS Web Core

Powiadomienie BeginRequest

Handler Jeszcze nie ustalony

Kod błędu 0x80070021

Błąd konfiguracji Z tej sekcji konfiguracji nie można korzystać w tej ścieżce. Dzieje się tak, gdy sekcja jest zablokowana na poziomie nadrzędnym. Blokowanie jest albo domyślnie (overrideModeDefault = „Odmów”), albo jawnie ustawione przez tag lokalizacji z overrideMode = „Odmów” lub starsze zezwalanieOverride = „false”.

Plik konfiguracyjny \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Źródło konfiguracji:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
Umar Abbas
źródło
Prawdopodobnie jest to wyłączone uwierzytelnianie systemu Windows w IIS, ale wymagane w pliku web.config aplikacji.
SpaceBison,
@SpaceBison jak mogę włączyć uwierzytelnianie systemu Windows w IIS8?
Umar Abbas,
Oto link do mojego pliku webconfig. icopter.co.uk/Webconfig.txt
Umar Abbas
Czy rozważałeś użycie modułu przepisywania adresów URL?

Odpowiedzi:

346

Dostałem dokładnie ten sam błąd i trafiłem na to pytanie. Jak wspomniano w komentarzach @SpaceBison, odpowiedź ta opisuje rozwiązanie - https://stackoverflow.com/a/12867753/404099 . Zauważyłem to za późno i brakuje mi kilku kroków. Oto, co zadziałało dla mnie:

Windows Server 2012, IIS 8.5 . Powinien działać również w przypadku innych wersji.

  • Przejdź do menedżera serwerów, kliknij dodaj role i funkcje
  • W sekcji roli wybierz: Serwer WWW
    • W podsekcji Bezpieczeństwo wybierz wszystko (wykluczyłem skrót, ograniczenia adresów IP i autoryzację adresów URL, ponieważ ich nie używamy)
    • W obszarze Tworzenie aplikacji wybierz .NET Extensibility 4.5, ASP.NET 4.5 i oba wpisy ISAPI
  • W sekcji funkcji wybierz: NET 3.5, .NET 4.5, ASP.NET 4.5
  • W sekcji serwera WWW wybierz: Serwer sieci Web (wszystkie), Narzędzia zarządzania (konsola zarządzania IIS i usługa zarządzania), Uwierzytelnianie systemu Windows - jeśli używasz któregoś z nich
Ilia Barahovski
źródło
13
Wszystko, co musiałem dodać, to elementy .NET 4.5 w sekcji AppDev i sekcji Funkcje. Element rozszerzalności wymusił również 2 wpisy ISAPI.
Bill
Te kroki pomagają mi z problemem. Dzięki.
psulek
Wreszcie rozwiązanie moich dolegliwości. Dzięki, to ma sens i jest dość proste. W dzisiejszych czasach zawsze brakuje funkcji i ról ...
Alexandru,
ServerManager nie jest dostępny w Windows7 Home, jak to naprawić?
knocte
1
@knocte - w Windows 7 możesz wejść w „Odinstaluj lub zmień program”, a następnie wciśnij „Włącz lub wyłącz funkcje systemu Windows”. To nie to samo co Menedżer serwera, ale w ten sposób można zainstalować IIS i powiązane funkcje.
Ilia Barahovski
122

Wystąpił ten błąd podczas próby hostowania usługi WCF w pustej aplikacji ASP.NET. Całe rozwiązanie wykorzystywało platformę .NET 4.5 na IIS 8.5 z systemem Windows 8.1. Gotcha miał

  1. Otwórz „Włączanie lub wyłączanie funkcji systemu Windows”

  2. Przejdź do sekcji WCF w ramach zaawansowanych usług ASP.NET 4.5

  3. Sprawdź aktywację HTTP.

  4. Zostaniesz poproszony o ponowne uruchomienie systemu.

    Zrzut ekranu

To powinno naprawić HTTP 500.19!

EDYCJA 11-FEB-2016 Właśnie dostałem problem na Windows 10 Pro, IIS 10, tym razem był to HTTP 404.0. Poprawka jest nadal taka sama, włącz „Aktywacja HTTP” w Funkcje systemu Windows -> Zaawansowane usługi .NET Framework 4.6 -> Usługi WCF -> Aktywacja HTTP

Sudhanshu Mishra
źródło
Dziękuję bardzo @dotnetguy! :-) to również działało dla mnie. Błąd pojawił się, gdy próbowałem hostować Web API 2.2 i MVC w pustej aplikacji ASP.NET.
Gurusinghe,
@dotnetguy To właśnie pomogło mi po tym, jak nie mogłem zmusić IIS do pracy z moją lokalną aplikacją MVC w Visual Studio. Dzięki wielkie. Aktywacja HTTP to jest!
Silkfire,
@silkfire cieszę się, że pomogło!
Sudhanshu Mishra
@dotnetguy Thanks
Heemanshu Bhalla
@dotnetguy Masz ten sam dokładny problem i to go rozwiązało! Wielkie dzięki! Naprawdę jesteś facetem .Net! : D
Rian
47

Miałem również ten sam problem, ale po burzy mózgów z IIS i Google przez wiele godzin. Znalazłem rozwiązanie. Ten błąd występuje, ponieważ niektóre ustawienia są wyłączone w IIS applicationHost.config.

Poniżej znajdują się kroki do rozwiązania:

  1. Idź do C:\Windows\System32\inetsrv\config\applicationHost.configi otwórz w notatniku
  2. Zmień następującą wartość klucza obecną w

    • <section name="handlers" overrideModeDefault="Deny" /> zmień tę wartość z „Odmów” na „Zezwól”

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> zmień tę wartość z „Odmów” na „Zezwól”

To zadziałało dla mnie.

SeeTheC
źródło
2
Dziękuję Ci. Po wykonaniu tych kroków pojawił się kolejny błąd. Mógłbym to rozwiązać tak, jak opisano tutaj: stackoverflow.com/a/30594003/434742
Jenny O'Reilly
31

Jeśli uruchamiasz IIS na tym komputerze, powinieneś spróbować uruchomić narzędzie rejestracyjne ASP.NET IIS (aspnet_regiis.exe).

Oto jak to zrobić: Jeśli używasz .NET Framework v4, otwórz wiersz polecenia jako administrator i zmień katalog na folder podstawowy .NET Framework, używając:

CD C:\Windows\Microsoft.NET\Framework\v4.0.30319

lub, jeśli używasz komputera 64-bitowego, użyj:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

po pomyślnym przejściu do odpowiedniego katalogu uruchom narzędzie rejestracyjne ASP.NET IIS, używając:

aspnet_regiis -i

Jeśli używasz innej wersji .NET Framework, po prostu zamień v4.0.30319na odpowiednią nazwę folderu.

Mam nadzieję że to pomoże.

Ibrahim Dauda
źródło
Próbuję uruchomić dwa różne projekty VS na moim serwerze iis (maszyna wirtualna); jedno działa, drugie nie ... Powyższe pomogło uzyskać pierwsze działanie; czy jest jakiś powód, dla którego 2. nie powinien działać?
JosephDoggie,
7
Użyłem tej metody w przeszłości, ale aspnet_regiis nie jest już obsługiwany w systemie Windows 8.1. Aby zarejestrować 4.5, skorzystaj z opcji Programy i funkcje> Włącz lub wyłącz funkcje systemu Windows> Usługi informacyjne> Usługi WWW> Funkcje rozwoju aplikacji> Sprawdź ASP.NET 4.5 i cokolwiek innego, czego możesz potrzebować.
masterwok
1
to musi być uruchomione jako Administrator (kliknij prawym przyciskiem myszy ikonę cmd.exe -> uruchom jako administrator), a nawet jeśli może wykryć błędy podczas operacji (i wygenerować plik dziennika), działało to dla mnie!
knocte
2
W przypadku IIS 8.5 w systemie Windows 8.1 (lub Windows Server 2012) to nie działa. Otrzymałem następujący monit: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Rozpocznij instalację ASP.NET (4.0.30319.33440). Ta opcja nie jest obsługiwana w tej wersji systemu operacyjnego. Zamiast tego administratorzy powinni zainstalować / odinstalować program ASP.NET 4.5 z IIS8 za pomocą okna dialogowego „Włączanie / wyłączanie funkcji systemu Windows”, narzędzia do zarządzania Menedżera serwera lub narzędzia wiersza polecenia.
Sudhanshu Mishra
Dzięki!! Działa dla mnie z IIS 10 i Windows 10 :)
Víctor Beltrán
22

Rozwiązałem to, wykonując następujące czynności:

WebServer(ISS)->WebServer->Application Development
add .NET Extensibility 3.5
add .NET Extensibility 4.5
add ASP.NET 4.5
add ISAPI Extensions
add ISAPI Filters

wprowadź opis zdjęcia tutaj

GIOESCOM
źródło
10

W Windows 8.1, IIS 8.5 rozwiązaniem było dla mnie zarejestrowanie 4.5 z panelu sterowania:

Programy i funkcje> Włącz lub wyłącz funkcje systemu Windows> Usługi informacyjne> Usługi WWW> Funkcje tworzenia aplikacji> Wybierz ASP.NET 4.5

Kliknij OK.

Jon
źródło
3
W systemie Windows 10 do wyboru były „ASP”, ASP.NET.35. ”I„ ASP.NET 4.6 ”. Sprawdzanie 4.6 działało dla mnie. Dzięki!
PeterVermont
Myślę, że jest to najbardziej zwięzła i łatwa do zrozumienia odpowiedź.
themefield
4

Jak wskazuje błąd - „Dzieje się tak, gdy sekcja jest zablokowana na poziomie nadrzędnym”. Aby odblokować sekcję, możesz użyć appcmd.exe i wykonać następujące polecenie:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost

Więcej informacji na temat blokowania sekcji i kontekstu konfiguracji nadrzędnej znajduje się w dokumentacji IIS .

Taras Alenin
źródło
4

W naszym przypadku zmagaliśmy się z tym błędem przez kilka dni. Okazuje się, że w panelu sterowania, programach włączaj lub wyłączaj funkcje systemu Windows.

Wybraliśmy Internetowe usługi informacyjne, usługi internetowe, funkcje tworzenia aplikacji i tam sprawdzamy zestaw funkcji związanych z naszym środowiskiem programistycznym. Na przykład: ASP.NET 4.6. .NET Extensibility 4.6 itp.

To działa!

Javier Livio
źródło
1
To rozwiązało również mój problem. Problem polegał na tym, że po dodaniu IIS do mojego komputera lokalnego nie włączałem odpowiednich funkcji. To rozwiązało. DZIĘKI
jbooker
3

Spróbuj odblokować odpowiednie ustawienia konfiguracji IIS (7.5) na poziomie serwera w następujący sposób:

  1. Otwórz Menedżera IIS
  2. Wybierz serwer w panelu Połączenia
  3. Otwórz Edytor konfiguracji w głównym panelu
  4. Z listy rozwijanej Sekcje wybierz sekcję do odblokowania, np. System.webServer> defaultPath
  5. Kliknij Odblokuj atrybut w prawym okienku
  6. Powtórz dla wszystkich innych ustawień, które musisz odblokować
  7. Uruchom ponownie IIS (opcjonalnie) - Wybierz serwer w panelu Połączenia, kliknij Uruchom ponownie w panelu Działania
Chris
źródło
Jest to prawie pomocne, ale w IIS 7 nie ma „defaultPath” w systemie.webServer
Djorge
Oznacza to, że jeśli chcesz zaktualizować uwierzytelnianie systemu Windows, znajdziesz go w ścieżce system.webServer -> Bezpieczeństwo -> Uwierzytelnianie.
Mido
3

W moim przypadku istniały reguły dla modułu IIS URL Rewrite , ale nie zainstalowałem tego modułu. Powinieneś sprawdzić swój web.config, jeśli są jakieś moduły zawarte, ale nie zainstalowane.

HasanG
źródło
1
Właśnie zainstalowałem wszystko, co potrzebne, ale nadal nie działa. Następnie właśnie zainstalowałem moduł URL Rewrite i uruchomiłem go! Dzięki!
Vitox
Jeśli brakuje modułu URL Rewrite, kod błędu nie będzie 0x80070021.
Lex Li
3

Jeśli jest to Windows 10, otwórz PowerShell jako administrator i uruchom następującą komendę:

dism /online /enable-feature /all /featurename:IIS-ASPNET45
użytkownik2912206
źródło
1

Twój web.config opisuje, że używasz uwierzytelniania formularzy - upewnij się, że włączono uwierzytelnianie formularzy i wyłącz anonimowe uwierzytelnianie w IIS w menu Uwierzytelnianie, dla witryny internetowej działającej w IIS.

SpaceBison
źródło
0

Wypełnij <staticContent />i usuń z pliku web.config.

Erdogan
źródło
0

Korzystamy z usług Amazon Web Services, dlatego staramy się używać skryptów i programów, aby rozwiązać ten problem. Więc szukałem narzędzia wiersza poleceń. Najpierw więc spróbowałem uruchomić

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

ale ponieważ korzystam z systemu Windows Server 2012 opartego na chmurze, narzekałem

This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

i przejrzałem Google i znalazłem oficjalną stronę pomocy technicznej KB2736284 . Jest więc narzędzie wiersza poleceń dism.exe. Więc wypróbowałem następujące

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

ale narzekało i podawało listę nazw funkcji do wypróbowania, więc wypróbowałem je jeden po drugim i przetestowałem moją stronę WebAPI po każdej z nich i zadziałało po dolnej na liście.

dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
dism /online /enable-feature /featurename:IIS-ISAPIFilter 
dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 

Teraz mogę przejść do mojej witryny WebAPI i wyświetlić informacje o interfejsie API. To powinno pomóc kilku osobom. [Jednak nie jestem jeszcze całkowicie poza lasem i nie mogę dotrzeć do witryny spoza pudełka. Nadal nad tym pracuję.]

Zrobiłem też kilka wcześniejszych kroków po odpowiedziach innych osób. Mogę potwierdzić, że poniższe Delegowanie funkcji musi zostać zmienione (chociaż chciałbym znaleźć dla nich narzędzie wiersza poleceń).

In Feature delegation

Change 
'Handler Mappings' from Read Only to Read/Write

Change 
'Modules' from Read Only to Read/Write

Change 
'SSL Settings' from Read Only to Read/Write
S Meaden
źródło
-1

Sprawdź, czy serwer IIS zainstalował funkcję przepisywania adresów URL.
Jeśli nie jest zainstalowany, upewnij się, że plik web.config nie ma konfiguracji związanej z przepisywaniem adresów URL

<!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/> ...

Jakiś czas skopiowaliśmy konfigurację ze starszego serwera i od razu wdrożyliśmy na nowym serwerze, wtedy możemy napotkać taki problem 500.

Frank Myat Thu
źródło
Jeśli brakuje przepisywania adresów URL, kod błędu nie będzie 0x80070021.
Lex Li
-3

Rozwiązaniem, które zadziałało, było usunięcie mojego obecnego pliku Web.config i dodanie nowego. To rozwiązało problem dla mnie

Pheko Moroke
źródło
6
Rezygnacja z pracy jest łatwiejsza niż utworzenie nowego pliku web.config. Nigdy nie próbuj tego robić.
Shadi Namrouti