5 Stimmen

Beim Verwenden von benutzerdefinierten Fehler-Einstellungen in der web.config tritt der IIS7 'one liner' Fehler auf.

Ich habe eine ASP.NET MVC-Anwendung, die an verschiedenen, passenden Stellen 404 und gelegentlich auch 500 Statuscodes zurückgibt.

Response.StatusCode = (int)HttpStatusCode.NotFound;

Wenn ich einen dieser Statuscodes setze, setze ich auch die TrySkipIisCustomErrors-Eigenschaft entsprechend.

Response.TrySkipIisCustomErrors = true

Was ich jetzt gerne tun würde, ist IIS so zu konfigurieren, dass diese Fehler, die ich selbst setze, durchgeleitet werden, und andere Fehler, die auftreten können (wie z.B. 404 auf statischen Dateien, wo ich keine Anfragen an ASP.NET sende, oder ungefangene 500 Fehler in meiner Anwendung (wo vermutlich die TrySkipIisCustomErrors-Eigenschaft nicht vom Framework gesetzt wurde), abzufangen.

Mein system.webServer/httpErrors-Knoten sieht so aus:

Dies gibt mir meine eigenen ASP.NET-Fehler zurück, bei denen ich TrySkipIisCustomErrors = true setze, und die Standard-IIS-Fehlerseiten für ungefangene 500er, 404er von statischen Dateien usw.

Dann habe ich versucht, es wie folgt zu ändern:

Ich glaube, dass dadurch meine benutzerdefinierte Fehlerseite anstelle der Standard-IIS-Seite angezeigt werden sollte. Allerdings erhalte ich beim Hinzufügen dieses Codes eine einzeilige IIS-Fehlermeldung ("Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist.") und es wird ein 500 Statuscode zurückgegeben.

Ich gehe davon aus, dass dies auf einen Fehler in meiner Konfiguration zurückzuführen ist, aber ich verstehe einfach nicht, was ich falsch mache!

Ich habe auch diesen Ansatz ausprobiert, mit denselben Ergebnissen:

Sogar die Einstellung einer Weiterleitung zu einer vollkommen anderen URL führt zum gleichen Problem.

Ich habe diese Seite unter anderem als Referenz verwendet: http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

Die Fehlerdatei existiert definitiv und ich kann sie direkt über einen Browser aufrufen.

Übrigens bin ich mir nicht ganz sicher, was ich mit dem system.Web\customErrors-Knoten machen soll. Handelt es sich hierbei um eine Einstellung nur für IIS6 oder hat sie irgendwie mit ASP.NET zu tun? Aktuell habe ich sie nicht in meiner web.config.

1voto

Khalid Abuhakmeh Punkte 10541

Fügen Sie dies zu Ihrem System.webServer Knoten hinzu. Es wird IIS mitteilen, dass die Fehler von ASP.Net behandelt werden sollen.

1voto

JPRO Punkte 1052

Ich weiß, dass dies eine alte Frage ist, aber sie entspricht genau dem Problem, das ich in den letzten Tagen hatte und das ich vor kurzem gelöst habe. Was für mich funktioniert hat:

Versuchen Sie, das

Element vollständig aus der web.config zu entfernen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X