Hallo,
ich hab ein ASP.NET Projekt (.NET-Framework 3.5), bei dem ich es einfach nicht schaffe, auf eine eigene vordefinierte Fehlerseite weitergeleitet zu werden, wenn ein Fehler auftritt.
Der entsprechende Eintrag aus der web.config sieht folgendermaßen aus:
<customErrors mode="On" defaultRedirect="~/error.htm" />
Die Seite "error.htm" liegt im Hauptverzeichnis des Projektes. Tritt ein Fehler auf, sehe ich stets nur den Hinweis, dass genaue Details aus Sicherheitsgründen nicht angezeigt werden können und ich die Möglichkeit habe, eine Seite bei "defaultRedirect" einzutragen. Das ist sowohl am Server als auch lokal so. Setze ich den Mode auf "RemoteOnly" ändert sich am Server nichts, lokal habe ich dann aber korrekterweise die detaillierte Fehlermeldung.
Woran könnte es liegen, dass ich bei oben gezeigter Konfiguration nicht die error.htm sehe? Muss sonst noch irgendwas konfiguriert werden? Ich hab testweise ein neues Projekt angelegt, bei dem ich einen Fehler provoziere und dabei das defaultRedirect getestet - funktioniert einwandfrei. Nur bei dem eigentlichen ASP-Projekt will es einfach nicht funktionieren.
Danke und LG
Peter
Hi,
meines Wissens musst Du das ohne die Tilde angeben.
Entsprechend ist auch die MSDN Doku:
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
Gruß
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hatte ich vorher auch so, habs dann aber geändert, weil ich es eben in der Doku so gefunden habe (heißt einfach, der Pfad ist relativ zum Hauptverzeichnis der Anwendung). Ist aber egal, am Verhalten ändert sich in meinem Fall nichts.
Zitat von: customErrors Element
defaultRedirect:Specifies the default URL to direct a browser to, if an error occurs. When this attribute is not specified, a generic error is displayed instead.
The URL can be absolute (for example,
> ) or relative. A relative URL, such as /ErrorPage.htm, is relative to the Web.config file that specified the URL for this attribute, not to the Web page in which the error occurred. A URL starting with a tilde (~), such as ~/ErrorPage.htm, indicates that the specified URL is relative to the root path of the application.
Mir ist durchaus bewusst wofür das ~ steht 😉
Bist Du sicher, dass die webconfig greift und der Hosting-Anbieter nichts drüber bügelt?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ja, da bin ich mir sicher, da es 1.) auf dem eigenen Server läuft und 2.) ja auch lokal beim Testen nicht funktioniert.
Vielleicht hast du einen Error im Errordokument?
Schalte mal die CustomErrors auf Off und öffne dein Errordokument per hand.
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Wenn Du MVC verwenden solltest - was ich aktuell nicht vermute, da Du es nicht erwähnt hast; ich es aber dennoch erwähnen möchte: MVC hat ein eigenes Konzept bezüglich des Error Handlings, was mit WebForms nicht zu vergleichen ist.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
So, ich weiß jetzt wo das Problem liegt.
Ich habe in der Anwendung zwei Seiten, die erste zeigt nur eine Grafik an und ruft dann Server.Transfer auf um zur zweiten Seite weiterzuleiten, welche dann die eigentliche Verarbeitung vornimmt (dabei kann auch ein Fehler passieren). Passiert auf diese Weise der Fehler kommt es zum beschriebenen Verhalten. Ruft man die zweite Seite hingegen per Direktlink auf (Parameterübergabe mittels GET über die URL) und es kommt zu einem Fehler, wird ordnungsgemäß auf die vordefinierte Fehlerseite weitergeleitet.
Das ist definitiv die Ursache aber weiß jemand warum die Weiterleitung in diesem Fall streikt? Müsste doch meines Verständnisses nach trotzdem funktionieren, oder?
Kannst du Response.Redirect benutzen?
Das verhält sich natürlich anders als Transfer, aber dann solltest du keine Probleme haben.
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Server.Transfer unterstützt keine Weiterleitung auf Plain HTML Seiten.
Siehe auch ASP.NET-Seitenübergänge: Response.Redirect versus Server.Transfer
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Das ist natürlich des Rätsels Lösung, danke!
Dann muss ich mir wohl überlegen, wie ich das anders umsetzen kann. Response.Redirect ist in meinem Fall leider keine Möglichkeit.
Du kannst den Content der HTML-Datei laden und einfach senden ...
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)