TLDR: Najpierw określ, skąd pochodzi błąd (przewiń w poszukiwaniu zrzutów ekranu czegoś, co przypomina błąd), wprowadź zmiany, aby uzyskać coś nowego, powtórz.
Najpierw określ, jaki komunikat o błędzie rzeczywiście się wyświetla.
Jeśli widzisz plik znajdujący się tutaj ...
% SystemDrive% \ inetpub \ custerr \\ 500.htm
... który ogólnie wygląda tak:
... wtedy wiesz, że widzisz aktualnie skonfigurowaną stronę błędu w ** IIS ** i NIE musisz zmieniać ustawienia niestandardowych błędów ASP.net, ustawienia szczegółów błędu asp lub ustawienia przeglądarki „pokaż przyjazne błędy http”.
Możesz spojrzeć na powyższą ścieżkę zamiast ufać mojemu zrzutowi ekranu na wypadek, gdyby ktoś go zmienił.
„Tak, widzę opisany wyżej błąd ...”
W tym przypadku widzisz ustawienie < httpErrors > lub w Menedżerze IIS są to Strony błędów -> Edytuj ustawienia funkcji. Domyślnie jest to errorMode = DetailedLocalOnly na poziomie węzła serwera (w przeciwieństwie do poziomu witryny), co oznacza, że chociaż zobaczysz tę skonfigurowaną stronę błędu w trybie zdalnym, powinieneś być w stanie zalogować się lokalnie na serwerze i zobaczyć pełne błąd, który powinien wyglądać mniej więcej tak:
Powinieneś mieć wszystko, czego potrzebujesz w tym momencie, aby naprawić bieżący błąd.
„Ale nie widzę szczegółowego błędu nawet podczas przeglądania na serwerze”
To pozostawia kilka możliwości.
- Przeglądarka, której używasz na serwerze, jest skonfigurowana do używania proxy w ustawieniach połączenia, więc nie jest postrzegana jako „lokalna”.
- W rzeczywistości nie przeglądasz witryny, do której myślisz, że przeglądasz - dzieje się tak zwykle, gdy zaangażowany jest moduł równoważenia obciążenia. Wykonaj test ping, aby sprawdzić, czy dns daje adres IP na serwerze lub w innym miejscu.
- Ustawienia httpErrors Twojej witryny są ustawione tylko na „Niestandardowe”. Zmień go na „DetailedLocalOnly”. Jeśli jednak wystąpi błąd konfiguracji, może to nie działać, ponieważ httpErrors na poziomie witryny jest również elementem konfiguracji. W takim przypadku przejdź do # 4
- Domyślne ustawienie httpErrors dla wszystkich witryn jest ustawione na „Niestandardowe”. W takim przypadku musisz kliknąć węzeł serwera najwyższego poziomu w Menedżerze IIS (a nie konkretnej stronie) i zmienić tam ustawienia httpErrors na DetailLocalOnly . Jeśli jest to serwer wewnętrzny i nie obawiasz się ujawnienia poufnych informacji, możesz również ustawić je na „Szczegółowe”, co pozwoli ci zobaczyć błąd od klientów innych niż serwer.
- Brakuje modułu na serwerze, takiego jak UrlRewrite (ten bardzo mnie gryzie i często daje ogólny komunikat, niezależnie od ustawień httpErrors).
„Logowanie się do serwera nie jest dla mnie opcją”
Zmień httpErrors swojej witryny na „Szczegółowe”, abyś mógł zobaczyć je zdalnie. Ale jeśli to nie działa, twój błąd może być już błędem konfiguracji, patrz punkt 3 powyżej powyżej. Więc możesz utknąć z # 4 lub # 5 i będziesz potrzebować kogoś z zespołu serwerów.
„Nie widzę strony błędu opisanej powyżej. Widzę coś innego”
Jeśli to zobaczysz ...
... i spodziewasz się zobaczyć coś takiego ...
... musisz zmienić „Wyślij błędy do przeglądarki” na „prawda” w Menedżerze usług IIS, w obszarze Witryna -> IIS -> ASP -> Właściwości debugowania
Jeśli to zobaczysz ...
albo to...
... musisz wyłączyć przyjazne błędy w przeglądarce lub użyć podglądu strony skrzypka, aby zobaczyć rzeczywistą odpowiedź w stosunku do tego, co przeglądarka chce Ci pokazać.
Jeśli to zobaczysz ...
... wtedy niestandardowe błędy działają, ale nie masz niestandardowej strony błędów (oczywiście w tym momencie mówiliśmy o .net, a nie o klasycznym asp). Musisz zmienić tag customErrors w pliku web.config na RemoteOnly, aby wyświetlić na serwerze, lub Off, aby wyświetlić zdalnie.
Jeśli widzisz coś, co ma styl podobny do Twojej witryny, wówczas niestandardowe błędy są prawdopodobnie włączone lub zdalne tylko i wyświetlają niestandardową stronę (na przykład Widoki-> Udostępnione-> Błąd.cshtml w MVC). To powiedziawszy, jest mało prawdopodobne, ale możliwe, że ktoś zmienił strony w IIS dla httpErrors, więc zobacz pierwszą sekcję na ten temat.