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.