IIS 7.5, 2008rc2, klassisches ASP, 500-Fehler-Meldung:
Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist.
Ich muss wissen, wie man IIS konfiguriert, um einen detaillierteren Fehler zu erhalten.
Ich habe versucht, alle Debugging-Optionen in der ASP Konfiguration auf true zu setzen.
Aber das hat nicht funktioniert. Kann mir jemand helfen?
Ich bin zu dem gleichen Problem gekommen und habe das genauso wie Alex K behoben.
Wenn "Fehler an Browser senden" nicht funktioniert, stellen Sie auch Folgendes ein:
Fehlerseiten -> 500 -> Funktionseinstellungen bearbeiten -> "Detaillierte Fehler"
Beachten Sie auch, dass, wenn der Inhalt der zurückgesendeten Fehlerseite ziemlich kurz ist und Sie den IE verwenden, IE) den vom Server zurückgesendeten nützlichen Inhalt ignoriert und Ihnen einen eigenen allgemeinen Fehler anzeigt Sie können dies in den IE-Optionen deaktivieren oder einen anderen Browser verwenden.
Wenn Sie sich auf einem Remote-Server befinden, können Sie Ihre web.config-Datei folgendermaßen konfigurieren:
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
Doppelklicken Sie auf dem Startbildschirm der Site in IIS admin auf "ASP", erweitern Sie "Debugging Properties", aktivieren Sie "Send errors to browser" und klicken Sie auf "Apply".
Wählen Sie auf dem Startbildschirm unter "Fehlerseiten" "500", dann "Funktionseinstellungen bearbeiten" und "Detaillierte Fehler".
Beachten Sie, dass die gleichen Schritte für IIS 8.0 (Windows Server 2012). gelten
In web.config unter
<system.webServer>
ersetzen Sie die Zeile (oder fügen Sie sie hinzu)
<httpErrors errorMode="Detailed"></httpErrors>
mit
<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
Dies liegt daran, dass IIS7 standardmäßig HTTP-Statuscodes wie 4xx und 5xx abfängt, die von Anwendungen weiter oben in der Pipeline generiert werden.
Aktivieren Sie als Nächstes "Fehler an Browser senden" im Abschnitt "ASP" und wählen Sie unter "Fehlerseiten/Funktionseinstellungen bearbeiten" Detaillierte Fehler "aus.
Geben Sie außerdem Schreibberechtigungen für den Websiteordner an die integrierte Gruppe IIS_IUSRS.
TLDR: Bestimmen Sie zunächst, woher Sie den Fehler in der Pipeline erhalten (scrollen Sie nach Screenshots von etwas, das Ihrem Fehler ähnelt), nehmen Sie Änderungen vor, um etwas Neues zu erhalten, und wiederholen Sie diese.
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 die Einstellung customErrors, asp error NICHT ändern müssen Detaileinstellung oder Browsereinstellung "Zeige freundliche http-Fehler".
Möglicherweise möchten Sie den oben angegebenen Pfad überprüfen, anstatt meinem Screenshot zu vertrauen, für den Fall, dass jemand ihn geändert hat.
In diesem Fall sehen Sie die Einstellung < httpErrors > oder im IIS Manager Fehlerseiten -> Funktionseinstellungen bearbeiten . Der Standardwert hierfür ist errorMode = DetailedLocalOnly auf der Serverknotenebene (im Gegensatz zur Site-Ebene) . Währenddessen wird diese konfigurierte Fehlerseite angezeigt Im Remote-Modus sollten Sie sich lokal am Server anmelden können und den vollständigen Fehler sehen, der ungefähr so aussehen sollte:
Sie sollten zu diesem Zeitpunkt über alles verfügen, was Sie benötigen, um den aktuellen Fehler zu beheben.
Das lässt ein paar Möglichkeiten.
Ändern Sie httpErrors Ihrer Site auf "Detailliert", damit Sie sie aus der Ferne sehen können. Aber wenn es nicht funktioniert, könnte Ihr Fehler bereits ein Konfigurationsfehler sein, siehe Punkt 3 oben. Sie könnten also an # 4 hängen bleiben und jemanden von Ihrem Serverteam brauchen.
... und Sie erwarten so etwas zu sehen ...
... dann müssen Sie "Fehler an Browser senden" in IIS Manager unter Site -> IIS -> ASP auf true setzen. - > Debugging-Eigenschaften
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 dem zu sehen, was Ihr Browser Ihnen anzeigt.
Wenn du das siehst ...
... dann funktionieren benutzerdefinierte Fehler, aber Sie haben keine benutzerdefinierte Fehlerseite (an dieser Stelle wurde natürlich von .net und nicht von klassischem asp gesprochen). Sie müssen Ihr customErrors-Tag in Ihrer web.config in RemoteOnly ändern, um es auf dem Server anzuzeigen, oder in Off, um es remote anzuzeigen.
Wenn Sie etwas sehen, das wie Ihre Site aussieht, sind benutzerdefinierte Fehler wahrscheinlich On oder RemoteOnly und es zeigt die benutzerdefinierte Seite an (z. B. Ansichten-> Freigegeben-> Fehler.cshtml in MVC). Das heißt, es ist unwahrscheinlich, aber möglich, dass jemand die Seiten in IIS für httpErrors geändert hat. Lesen Sie dazu den ersten Abschnitt.
setzen Sie den Wert des httpErrors-Attributs "existingResponse" auf "PassThrough". Meins war auf "Ersetzen" eingestellt, was dazu führte, dass der YSOD nicht angezeigt wurde.
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
Eine Sache, die niemand erwähnt hat, ist eine sehr schnelle und vorübergehende Lösung. Sie können den Fehler auf dem lokalen Host dieses Webservers anzeigen.
Fot Leute, die ALLES ausprobiert haben und die Fehlerdetails einfach NICHT anzeigen können, wie ich, ist es eine gute Idee, die verschiedenen Konfigurationsebenen zu überprüfen. Ich habe eine Konfigurationsdatei auf Website-Ebene und auf Anwendungsebene (innerhalb der Website) überprüfen beide. Wie sich herausstellte, wurden auf dem höchsten Knoten in IIS (direkt unter der Startseite ist der Name identisch mit dem Computernamen des Webservers) "Detaillierte Fehler" deaktiviert. Überprüfen Sie den Fehler Seiten dort.
Sie können auch überprüfen, ob Sie den Ordner Ihrer Hauptwebsite geändert haben (c:\inetpub\wwwroot
) für einen anderen Ordner müssen Sie der Gruppe IIS_IUSRS im neuen Ordner Leseberechtigung erteilen.
Fand es.
führen Sie cmd als Administrator aus, wechseln Sie in den Ordner "system32\inetsrv" und führen Sie Folgendes aus:
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
Jetzt kann ich detaillierte ASP-Fehler sehen.
Wenn Sie den Browser auf dem Server ausführen und Ihre URL des Projekts mit der lokalen IP testen, haben Sie alle Fehler dieses Projekts ohne generelle Fehlerseite erhalten (z. B. 500 Fehlerseiten).