TLDR: Bestimmen Sie zuerst, woher in der Pipeline der Fehler stammt (scrollen Sie nach Screenshots von etwas, das Ihrem Fehler ähnelt), nehmen Sie Änderungen vor, um etwas Neues zu erhalten, und wiederholen Sie den Vorgang.
Stellen Sie zunächst fest, welche Fehlermeldung tatsächlich angezeigt wird.
Wenn Sie die Datei hier sehen ...
% SystemDrive% \ inetpub \ custerr \\ 500.htm
... was im Allgemeinen so aussieht:
... dann wissen Sie, dass die aktuell konfigurierte Fehlerseite in ** IIS ** angezeigt wird, und Sie müssen die Einstellung für benutzerdefinierte ASP.net-Fehler, die Asp-Fehlerdetaileinstellung oder die Browsereinstellung "Anzeigen freundlicher HTTP-Fehler" NICHT ändern.
Vielleicht möchten Sie sich den oben genannten Pfad ansehen, anstatt meinem Screenshot zu vertrauen, falls jemand ihn geändert hat.
"Ja, ich sehe den oben beschriebenen Fehler ..."
In diesem Fall wird die Einstellung < httpErrors > angezeigt, oder im IIS-Manager werden die Fehlerseiten -> Funktionseinstellungen bearbeiten angezeigt. Die Standardeinstellung hierfür ist errorMode = DetailedLocalOnly auf Serverknotenebene (im Gegensatz zur Site-Ebene). Dies bedeutet, dass Sie diese konfigurierte Fehlerseite auf der Remote-Seite sehen können, sich jedoch lokal beim Server anmelden und die vollständige Seite anzeigen können Fehler, der ungefähr so aussehen sollte:
Sie sollten zu diesem Zeitpunkt über alles verfügen, was Sie zur Behebung des aktuellen Fehlers benötigen.
"Aber ich sehe den detaillierten Fehler nicht einmal beim Surfen auf dem Server."
Das lässt ein paar Möglichkeiten.
- Der Browser, den Sie auf dem Server verwenden, ist so konfiguriert, dass er in seinen Verbindungseinstellungen einen Proxy verwendet, sodass er nicht als "lokal" angesehen wird.
- Sie navigieren nicht zu der Site, zu der Sie zu navigieren glauben. Dies geschieht normalerweise, wenn ein Load Balancer beteiligt ist. Führen Sie eine Ping-Überprüfung durch, um festzustellen, ob DNS Ihnen eine IP auf dem Server oder an einem anderen Ort gibt.
- Die httpErrors- Einstellungen Ihrer Site sind nur auf "Benutzerdefiniert" eingestellt. Ändern Sie es in "DetailedLocalOnly". Wenn Sie jedoch einen Konfigurationsfehler haben, funktioniert dies möglicherweise nicht, da httpErrors auf Site-Ebene auch ein Konfigurationselement ist. In diesem Fall fahren Sie mit Schritt 4 fort
- Der Standardwert für httpErrors für alle Websites ist "Benutzerdefiniert". In diesem Fall müssen Sie im IIS-Manager (und nicht auf einer bestimmten Site) auf den Serverknoten der obersten Ebene klicken und dort die httpErrors- Einstellungen in DetailedLocalOnly ändern . Wenn es sich um einen internen Server handelt und Sie sich keine Sorgen um die Weitergabe vertraulicher Informationen machen, können Sie ihn auch auf "Detailliert" setzen, damit Sie den Fehler von anderen Clients als dem Server sehen können.
- Sie vermissen ein Modul auf dem Server wie UrlRewrite (dieses beißt mich sehr und gibt häufig die allgemeine Nachricht, unabhängig von den httpErrors-Einstellungen).
"Das Anmelden am Server ist für mich keine Option."
Ändern Sie die httpErrors Ihrer Site in "Detailliert", damit Sie sie aus der Ferne sehen können. Wenn es jedoch nicht funktioniert, handelt es sich bei Ihrem Fehler möglicherweise bereits um einen Konfigurationsfehler (siehe Nummer 3 direkt oben). Sie könnten also mit # 4 oder # 5 stecken bleiben und jemanden aus Ihrem Serverteam brauchen.
"Ich sehe die oben beschriebene Fehlerseite nicht. Ich sehe etwas anderes."
Wenn Sie das sehen ...
... und Sie erwarten so etwas ...
... dann müssen Sie im IIS-Manager unter Site -> IIS -> ASP -> Debugging-Eigenschaften "Fehler an Browser senden" in "true" ändern
Wenn Sie das sehen ...
oder dieses...
... Sie müssen freundliche Fehler in Ihrem Browser deaktivieren oder die Webansicht von Fiddler verwenden, um die tatsächliche Antwort im Vergleich zu den von Ihrem Browser ausgewählten Anzeigen anzuzeigen .
Wenn Sie das sehen ...
... dann funktionieren benutzerdefinierte Fehler, aber Sie haben keine benutzerdefinierte Fehlerseite (zu diesem Zeitpunkt wurde natürlich über .net und nicht über klassisches Asp gesprochen). Sie müssen Ihr customErrors-Tag in Ihrer web.config in RemoteOnly ändern, um es auf dem Server anzuzeigen, oder Off, um es remote anzuzeigen.
Wenn Sie etwas sehen, das wie Ihre Site gestaltet ist, sind benutzerdefinierte Fehler wahrscheinlich On oder RemoteOnly und es wird die benutzerdefinierte Seite angezeigt (Ansichten-> Freigegeben-> Fehler.cshtml in MVC zum Beispiel). Es ist jedoch unwahrscheinlich, aber möglich, dass jemand die Seiten in IIS für httpErrors geändert hat. Lesen Sie daher den ersten Abschnitt dazu.