Błąd HTTP 503. usługa jest niedostępna. Pula aplikacji zatrzymuje się podczas uzyskiwania dostępu do witryny internetowej


167

Jest wiele postów na ten temat i do tej pory próbowałem wielu rzeczy. Ale bez skutku. Sam jako programista Winforms zacząłem pracować nad tym tematem kilka dni temu, gdy moja firma podejmowała inicjatywy w sieci.

Mam projekt ASP.Net i chcę go hostować w lokalnych usługach IIS. W Project properties -> Webustawieniach wybrałem Use Local IIS Serveri podałem adres URL jako localhost/MyApp. Próbowałem uzyskać do niego dostęp w mojej przeglądarce Firefox i otrzymałem błąd jakoHTTP Error 503. The service is unavailable.

Wcześniej otrzymywałem wiele innych błędów i po kolei wszystkie je naprawiałem. Ale uderzył tym. Oto ustawienia, które mam w swoim projekcie

  1. Pula aplikacji ustawiona na ASP.Net v4.0 Classic
  2. Enable 32 bit ApplicationWłaściwość puli aplikacji ma wartość true
  3. Pula aplikacji została uruchomiona
  4. Właściwość kompilacji projektu ustawiona Any CPUna platformę docelową

Ale chciałbym wspomnieć o dziwnym zachowaniu. Oto coś, z czym mam do czynienia

  1. Pula aplikacji została uruchomiona
  2. Próbuję uzyskać dostęp do mojej lokalnej witryny internetowej (podając adres URL jako localhost/MyApp)
  3. Otrzymuję błąd jako HTTP Error 503. The service is unavailable
  4. Pula aplikacji została zatrzymana

Widziałem następujący link i już go wypróbowałem. Do powyższego zachowania dotarłem tutaj . Zgodnie z tym linkiem nazwa komputera nie powinna zawierać .. Nie mam żadnego .w nazwie mojego komputera, ale mam -w nim. Zawiera również nazwę mojej domeny .. Ponadto nie mogę zmienić tych ustawień, ponieważ jest to mój laptop w biurze, a nasze ustawienia TFS są powiązane z naszymi nazwami domen i komputerów.

Czy ktoś może mi pomóc zrozumieć, co się dzieje? Proszę, prowadź mnie. Dzięki.

Edytować

Mam następujący kod w Global.asax. Application_BeginRequestmetoda jest pusta w tym samym pliku.

protected override void Application_Start(object sender, EventArgs e)
{
    base.Application_Start(sender, e);
    String _path = String.Concat(System.AppDomain.CurrentDomain.RelativeSearchPath, ";",
                                         System.Environment.GetEnvironmentVariable("PATH"));
    System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process);
    MyAppLog.Initialize();
    MyAppLog.WriteMessage("Application Started");
}

Aktualizacja

Zgodnie z sugestiami zawartymi w komentarzu, jestem w stanie uruchomić stronę internetową z Cassini.


Czy masz jakiś kod w swoim Global.asax, który działa przy starcie aplikacji? Coś, co może utknąć w pętli? Masz włączone, Enable 32 bit Applicationale czy używasz tylko 32-bitowych bibliotek DLL?
CodingIntrigue

Co się stanie, gdy uruchomisz go w Cassini?
Simon Whitehead

@RGraham: Mam ustawioną właściwość kompilacji projektu Any CPU. Więc myślę, że używane biblioteki DLL nie powinny stanowić problemu. Zobacz edycję kodu Global.asax. Dzięki
Sandy

@SimonWhitehead: Nie mam pojęcia, czym jest Cassini. Ściągnąłem go teraz z cassinidev.codeplex.com . W pobranych plikach widzę kilka bibliotek dll i exe. Czy mógłbyś mi pomóc, jak go używać? W międzyczasie postaram się poczytać na ten temat ze źródeł internetowych.
Sandy

@SimonWhitehead: Mogę uruchomić stronę internetową z Cassini.
Sandy

Odpowiedzi:


315

Jedną z możliwych przyczyn takiego stanu rzeczy może być to, że pula aplikacji w usługach IIS jest skonfigurowana do uruchamiania na jakimś koncie niestandardowym, a to konto albo nie istnieje, albo podano nieprawidłowe hasło lub hasło zostało zmienione. Zapoznaj się z zaawansowanymi właściwościami puli aplikacji w usługach IIS, dla którego konta używa.

Dziennik zdarzeń może również zawierać więcej informacji o tym, dlaczego pula aplikacji zatrzymuje się natychmiast po pierwszym żądaniu.

wprowadź opis obrazu tutaj


38
W moim przypadku to był problem. Zmieniłem hasło do systemu Windows i moje lokalne usługi IIS dla systemu Windows 8.1 przestały działać. Musiałem aktualizować każdy projekt w wielu miejscach. W IIS 8 musiałem zaktualizować poświadczenia w puli aplikacji, klikając prawym przyciskiem myszy pulę i klikając „Ustawienia zaawansowane -> Model procesu -> Tożsamość”. Następnie musiałem zaktualizować samą witrynę, przechodząc do „Witryny -> Moja witryna -> Ustawienia zaawansowane -> Poświadczenia ścieżki fizycznej”
teynon,

4
Nawet jeśli konto istnieje, a hasło jest poprawne, mogło zostać wyłączone; spowodowałoby to te same objawy.
Wolfgang

2
Tak, to jest rozwiązanie. Hasło do mojego konta jest bardzo często zmieniane. I zapomniałem podać nowe hasło w "Ustawieniach zaawansowanych"
mihkov

2
sprawdzanie dziennika zdarzeń jest drogą do zrobienia, zawsze pomogło mi w tych problemach, kiedy ostatnio sprawdzałem dziennik zdarzeń i stwierdziłem, że nie udało się załadować rewrite.dll w iis, przeszedłem do programów i funkcji w panelu sterowania, naprawiłem instalację i wszystko wróciło do normy.
Amr Elgarhy,

3
Niedawno zmieniliśmy hasło. To było rozwiązanie. Dla innych, zobacz zrzut ekranu tutaj: i.imgur.com/rp8bnGy.png
AskYous

43

Ok, mam inne rozwiązanie dla jednego konkretnego przypadku: jeśli używasz WINDOWS 10 i ostatnio go zaktualizowałeś (z pakietem Anniversary Update), musisz wykonać poniższe czynności:

  1. Sprawdź swoje Windows Event Viewer- naciśnij Win + R i wpisz:, a eventvwrnastępnie naciśnij ENTER.
  2. Po lewej stronie Windows Event Viewerkliknij Windows Logs-> Application.
  3. Teraz musisz znaleźć BŁĘDY dla źródła IIS-W3SVC-WPw środkowym oknie.
  4. Prawdopodobnie zobaczysz wiadomość taką jak:

Nie można załadować modułu DLL >> ścieżka-do-DLL <<. Dane są błędem.

  1. Musisz iść do Control Panel->Program and Features iw zależności od tego, który plik dll nie może zostać załadowany, musisz naprawić inny moduł:
    • for rewrite.dll- znajdź IIS URL Rewrite Module 2 i kliknij Change->Repair
    • for aspnetcore.dll- znajdź Microsoft .NET Core 1.0.0 - VS 2015 Tooling ... i kliknij Change-> Repair.
  2. Zrestartuj swój komputer.

Ta odpowiedź pomogła mi rozwiązać podobny problem. Naprawiono błąd „Usługa niedostępna” poprzez usunięcie Core 2.2 (sama naprawa nie rozwiązała problemu). głos w górę.
Roberto

2
Przyjęta odpowiedź nie pomogła. To zrobił. Dzięki!
Devil's Advocate

1
świetna odpowiedź, dziennik pokazuje, że nie udało się załadować modułu DLL C: \ Windows \ System32 \ inetsrv \ compdyn.dll. Dane są błędem. więc instaluję Dynamic Content Compression
Mehdi Daustany

Dla mnie było to: The Module DLL C:\Windows\System32\inetsrv\iis_ssi.dll failed to load. The data is the error.Więc zainstalowałem Select Server Side Includes zgodnie z tą sugestią
David Refoua

14

W mojej sytuacji zmieniło się moje hasło logowania, podczas gdy pula aplikacji nadal używa starego. Po prostu kliknij „Ustawienia zaawansowane” swojej puli aplikacji i zresetuj swoją „Tożsamość”.


Zgodziłbym się, że zdarza się to dość często
Sandy

11

Miałem ten sam problem i debugowałem go przy użyciu dzienników zdarzeń. Najpierw powiedział, że: „Nie można znaleźć opisu zdarzenia o identyfikatorze 5059 ze źródła Microsoft-Windows-WAS”.

Następnie włączyłem WAS, używając włączania / wyłączania funkcji systemu Windows . Wtedy zobaczyłem to w eventvwr "Nie można znaleźć Microsoft-Windows-DistributedCOM".

W końcu zrezygnowałem i usunąłem pulę aplikacji (która zatrzymywała się po uzyskaniu dostępu do witryny) i utworzyłem ją ponownie, tak jak jest. To rozwiązało problem.


A jeśli masz kilka witryn odwołujących się do tej samej puli aplikacji, możesz użyć appcmd do ich zbiorczej aktualizacji : appcmd list site /xml | appcmd set site /[path='/'].applicationPool:YOURNEWPOOL /in
drzaus

Dla mnie też zadziałało. Po uaktualnieniu z 2008 do 2012 pule aplikacji nie były do ​​końca zadowolone.
Anthony Horne

6

Dla każdego, kto przyjeżdża tutaj z Windows 10 i po zaktualizowaniu ich do aktualizacji rocznicowej, sprawdź ten link, pomógł mi:

https://orcharddojo.net/blog/troubleshooting-iis-apppool-crashes-status-503-after-windows-10-anniversary-update

W przypadku, gdy łącze nie działa: Jeśli dziennik zdarzeń pokazuje, że plik aspnetcore.dll, rewrite.dll (najczęściej, ale mogą to być również inne), nie został załadowany, musisz naprawić brakujące elementy.

Oto dwa konkretne problemy, których do tej pory doświadczyliśmy i jak je naprawić, ale możesz napotkać zupełnie inne problemy:

"C:\WINDOWS\system32\inetsrv\rewrite.dll" (reference)
    Go to "Programs and Features" (Win+X, F) and repair "IIS URL Rewrite Module 2".
"C:\WINDOWS\system32\inetsrv\aspnetcore.dll" (reference)
    Go to "Programs and Features" (Win+X, F) and repair "Microsoft .NET Core 1.0.0 - VS 2015 Tooling ...".

6

Przez większość czasu było to spowodowane ustawieniem puli aplikacji.

Aby rozwiązać ten problem, wykonaj poniższe czynności

  1. Sprawdź, czy usługa Apppool działa.
  2. Sprawdź tożsamość puli aplikacji.
  3. Wprowadź nowe hasło, jeśli zostało zmienione dla tej tożsamości.

Poniższe obrazy przedstawiają te ustawienia w usługach IIS

wprowadź opis obrazu tutaj


5

Jeśli masz McAfee HIPS i widzisz następujący błąd w dzienniku aplikacji przeglądarki zdarzeń:

Wczytanie modułu DLL C: \ Windows \ System32 \ inetsrv \ HipIISEngineStub.dll nie powiodło się.
Dane są błędem.

Następnie następujące rozwiązania rozwiązały problem w moim przypadku: https://kc.mcafee.com/corporate/index?page=content&id=KB72677&actp=LIST

Cytat ze strony:

  1. Kliknij Start, Uruchom, wpisz explorer i kliknij OK.
  2. Przejdź do:% windir% \ system32 \ inetsrv \ config
  3. Otwórz plik applicationHost.config jako Administrator do edycji w Notatniku.
  4. Edytuj sekcję <globalModules> i usuń następujący wiersz:
    <add name = "MfeEngine" image = "% windir% \ System32 \ inetsrv \ HipIISEngineStub.dll" />

  5. Edytuj sekcję <modules> i usuń następujący wiersz:
    <add name = "MfeEngine" />

  6. Po zakończeniu edycji pliku applicationHost.config zapisz plik, a następnie uruchom ponownie serwer IIS za pomocą iisreset lub ponownie uruchamiając system.

5

W moim przypadku sprawdziłem dzienniki zdarzeń i znalazłem błąd: Nie można odczytać pliku konfiguracyjnego „próbując odczytać dane konfiguracyjne z pliku„ \\? \ ”, Wiersz numer„ 0 ”. Pole danych zawiera kod błędu.

Kod błędu to 2307.

Usunąłem wszystkie pliki w C: \ inetpub \ temp \ appPools i zrestartowałem iis. To rozwiązało problem.


4

Miałem podobny problem. Rozwiązałem to, dodając mojego użytkownika do zasady „Logowanie jako zadanie wsadowe” w obszarze „Zasady zabezpieczeń lokalnych”> „Zasady lokalne”> „Przypisywanie praw użytkownika”.


4

Kiedy po raz pierwszy dodałem usługę i utworzyłem dla niej pulę aplikacji. Zrobiłem "iisreset" z wiersza poleceń i zadziałało.


3

Jeśli możesz uruchomić witrynę internetową w debugerze programu Visual Studio, możesz zobaczyć, gdzie w kodzie pula aplikacji ulega awarii. W moim przypadku była to funkcja wywoływana rekurencyjnie nieograniczoną liczbę razy, co powodowało przepełnienie stosu. Uwaga: dziennik zdarzeń systemu Windows i dzienniki usług IIS nie były pomocne w diagnozowaniu problemu.


3

Miałem ten sam problem z iis 8.5. Po przeszukaniu EventViewer pod Windows Logs -> applications, zdałem sobie sprawę, że mam błąd uprawnień do pliku machine.config frameworku .net znajdującego się w "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config ”. Nadanie mu uprawnień dla IIS_IUSRS rozwiązało mój problem (kliknij plik prawym przyciskiem myszy -> właściwości -> bezpieczeństwo -> edytuj -> dodaj -> IIS_IUSRS)


3

Wystąpił ten błąd iw moim przypadku przyczyną było to, że jakiś czas temu zmodyfikowałem hasło użytkownika i błąd 503 pojawił się dopiero po ponownym uruchomieniu puli aplikacji.

Naprawiłem więc ustawienie nowego hasła w pulach aplikacji / Ustawienia zaawansowane / Tożsamość / [...] / Ustaw ... / Hasło / Potwierdź hasło


2

Miałem podobny problem, wszystkie moje pule aplikacji zatrzymywały się, gdy wysyłano do nich żądanie sieci Web. Chociaż otrzymywałem następujący błąd w Podglądzie zdarzeń:

Proces roboczy dla puli aplikacji „nazwa_aplikacji” napotkał błąd „Plik konfiguracyjny ma nieprawidłowy format XML” podczas próby odczytania danych konfiguracyjnych z pliku „\? \ C: \ inetpub \ temp \ apppools \ nazwaPoolName \ appPoolName.config”, wiersz numer 3'. Pole danych zawiera kod błędu.

Który powiedział mi, że wystąpiły błędy w pliku application.config pod adresem:

C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config

W moim scenariuszu podczas wdrażania edytowałem plik web.config z elementem, którego IIS wyraźnie nie lubi, applicationHost.config zeskrobał plik web.config i wstawiłem ten zły element i nie rozwiązałem go, dopóki go ręcznie nie usunę


„element, którego IIS wyraźnie nie lubi”. co to za konkretny element, o którym wspomniałeś
Akhil

Napisałem ten post ponad 4 lata temu. Nie jestem pewien, jaki element znajdował się w pliku web.config, ale nie o to chodzi. Problem z pulą aplikacji, który opisuje OP, przydarzył mi się i odzyskiwałem te nieprzydatne komunikaty o błędach. Przyczyną powyższego było umieszczenie nieprawidłowego wpisu w pliku web.config mojej witryny. (być może z błędem w pisowni lub składni lub sekcją, której IIS nie rozpoznała jako poprawna)
ShaneC

2

Oprócz czynności opisanych pod tym linkiem w odpowiedzi Orhana może być konieczne dodatkowe usunięcie modułu natywnego, przechodząc do Menedżera usług IIS> Katalog główny serwera> Moduły> Konfiguruj moduły natywne. Wybierz MfeEngine, a następnie wybierz Usuń.


2

Zmiana „Managed Pipeline Mode” z „Classic” na „Integrated” działała dla mnie. Można to zmienić w Pule aplikacji -> Ustawienia podstawowe


To rozwiązało mój problem, który pojawił się po zastosowaniu następującego KB systemu Windows na naszym serwerze Windows 2008 R2 z usługami IIS 7.5. ### 2019-07 Pakiet zbiorczy zabezpieczeń i jakości dla .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 dla Windows 7 i Server 2008 R2 dla x64 (KB4507420) Więcej informacji: support.microsoft.com/kb/4507420 ###
phanf

1

Wystarczy dodać do tych Anniversary Updatekwestii (dzięki Microsoft), jeśli plik brakuje jest cgi.dll, czyli twój Event Viewerma

The Module DLL C:\WINDOWS\System32\inetsrv\cgi.dll failed to load.  The data is the error.

Następnie, aby to naprawić:

  1. Iść do IIS Manager
  2. Wybierz najwyższy wiersz w Connectionspanelu (zazwyczaj nazwa Twojego komputera)
  3. Na samym dole prawego panelu, poniżej Management, powinno byćWeb Platform Installer
  4. Po załadowaniu wybierz Products
  5. W wyszukiwaniu wpisz, cgia następnie naciśnij<Enter>
  6. Wybierz, IIS: CGIa następnie kliknij Addpo prawej i Installna końcu na dole
  7. Po zainstalowaniu powinien zmusić Cię do ponownego uruchomienia komputera i powinieneś zostać naprawiony.

1
Mój był „przepisany adres URL”, który odinstalowałem, a następnie ponownie zainstalowałem. Ponieważ dostałem ten błąd: „Nie można załadować modułu DLL C: \ WINDOWS \ system32 \ inetsrv \ rewrite.dll. Dane są błędem”.
Gwasshoppa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.