web-dev-qa-db-ger.com

Detaillierte 500 Fehlermeldung ASP + IIS 7.5

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?

183
egidiocs

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"

enter image description here

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.

223
Vaclav Elias

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>
89
safhac

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

46
Alex K.

Nachdem ich versucht hatte, Vaclavs und Alexs zu beantworten, musste ich immer noch "Zeige benutzerfreundliche HTTP-Fehlermeldungen" im IE deaktivieren

enter image description here

42
Tim Partridge

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.

20
Niente00

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.

Ermitteln Sie zunächst, welche Fehlermeldung Ihnen tatsächlich angezeigt wird.

Wenn Sie die Datei hier sehen ...

% SystemDrive%\inetpub\custerr \\ 500.htm

... was im Allgemeinen so aussieht:

IIS Default 500 error

... 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.

"Ja, ich sehe den oben beschriebenen Fehler ..."

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:

Detailed HTTP Error

Sie sollten zu diesem Zeitpunkt über alles verfügen, was Sie benötigen, um den aktuellen Fehler zu beheben.

"Aber ich sehe den detaillierten Fehler nicht einmal beim Browsen auf dem Server"

Das lässt ein paar Möglichkeiten.

  1. Der auf dem Server verwendete Browser ist so konfiguriert, dass in den Verbindungseinstellungen ein Proxy verwendet wird, sodass er nicht als "lokal" angesehen wird.
  2. Sie navigieren nicht zu der Site, von der Sie glauben, dass Sie sie besuchen. Dies ist häufig der Fall, wenn ein Load Balancer beteiligt ist. Führen Sie eine Ping-Prüfung durch, um festzustellen, ob dns Ihnen eine IP auf dem Server oder an einem anderen Ort gibt.
  3. Die httpErrors Einstellungen Ihrer Site sind nur für "Benutzerdefiniert" festgelegt. Ändern Sie es in "DetailedLocalOnly". Wenn Sie jedoch einen Konfigurationsfehler haben, funktioniert dies möglicherweise nicht, da httpErrors auf Site-Ebene ebenfalls ein Konfigurationselement ist. In diesem Fall fahren Sie mit Schritt 4 fort
  4. Die Standardeinstellung für httpErrors für alle Sites 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 Einstellungen httpErrors in DetailedLocalOnly ändern. Wenn es sich um einen internen Server handelt und Sie keine Bedenken haben, vertrauliche Informationen preiszugeben, können Sie ihn auch auf "Detailliert" setzen, damit Sie den Fehler von anderen Clients als dem Server sehen können.

"Die Anmeldung am Server ist für mich keine Option."

Ä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.

"Ich sehe die oben beschriebene Fehlerseite nicht. Ich sehe etwas anderes."

Wenn du das siehst ...

enter image description here

... und Sie erwarten so etwas zu sehen ...

enter image description here

... dann müssen Sie "Fehler an Browser senden" in IIS Manager unter Site -> IIS -> ASP auf true setzen. - > Debugging-Eigenschaften

Wenn du das siehst ...

ie friendly errors 1

oder dieses...

ie friendly errors 2

... 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 ...

Custom errors enabled

... 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.

15
b_levitt

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">
9
Dana Benson

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.

6
RandomUs1r

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.

3
Jon Koeter

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.

3

Fand es.

http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx

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.

1
egidiocs

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).

1
Ali Rasouli