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 -> Web
ustawieniach wybrałem Use Local IIS Server
i 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
- Pula aplikacji ustawiona na ASP.Net v4.0 Classic
Enable 32 bit Application
Właściwość puli aplikacji ma wartość true- Pula aplikacji została uruchomiona
- Właściwość kompilacji projektu ustawiona
Any CPU
na platformę docelową
Ale chciałbym wspomnieć o dziwnym zachowaniu. Oto coś, z czym mam do czynienia
- Pula aplikacji została uruchomiona
- Próbuję uzyskać dostęp do mojej lokalnej witryny internetowej (podając adres URL jako
localhost/MyApp
) - Otrzymuję błąd jako
HTTP Error 503. The service is unavailable
- 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_BeginRequest
metoda 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.
Enable 32 bit Application
ale czy używasz tylko 32-bitowych bibliotek DLL?Any CPU
. Więc myślę, że używane biblioteki DLL nie powinny stanowić problemu. Zobacz edycję kodu Global.asax. DziękiOdpowiedzi:
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.
źródło
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:
Windows Event Viewer
- naciśnij Win + R i wpisz:, aeventvwr
następnie naciśnij ENTER.Windows Event Viewer
kliknijWindows Logs
->Application
.IIS-W3SVC-WP
w środkowym oknie.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ł:rewrite.dll
- znajdź IIS URL Rewrite Module 2 i kliknijChange
->Repair
aspnetcore.dll
- znajdź Microsoft .NET Core 1.0.0 - VS 2015 Tooling ... i kliknijChange
->Repair
.źródło
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ą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ść”.
źródło
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.
źródło
appcmd list site /xml | appcmd set site /[path='/'].applicationPool:YOURNEWPOOL /in
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:
źródło
Przez większość czasu było to spowodowane ustawieniem puli aplikacji.
Aby rozwiązać ten problem, wykonaj poniższe czynności
Poniższe obrazy przedstawiają te ustawienia w usługach IIS
źródło
Jeśli masz McAfee HIPS i widzisz następujący błąd w dzienniku aplikacji przeglądarki zdarzeń:
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:
źródło
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.
źródło
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”.
źródło
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.
źródło
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.
źródło
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)
źródło
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
źródło
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ń:
Który powiedział mi, że wystąpiły błędy w pliku application.config pod adresem:
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ę
źródło
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ń.
źródło
Zmiana „Managed Pipeline Mode” z „Classic” na „Integrated” działała dla mnie. Można to zmienić w Pule aplikacji -> Ustawienia podstawowe
źródło
Wystarczy dodać do tych
Anniversary Update
kwestii (dzięki Microsoft), jeśli plik brakuje jestcgi.dll
, czyli twójEvent Viewer
maNastępnie, aby to naprawić:
IIS Manager
Connections
panelu (zazwyczaj nazwa Twojego komputera)Management
, powinno byćWeb Platform Installer
Products
cgi
a następnie naciśnij<Enter>
IIS: CGI
a następnie kliknijAdd
po prawej iInstall
na końcu na doleźródło