Laden...

web.config - Weiterleitung zu vordefinierter Fehlerseite funktioniert nicht

Erstellt von PeterRRR vor 12 Jahren Letzter Beitrag vor 12 Jahren 4.085 Views
P
PeterRRR Themenstarter:in
50 Beiträge seit 2009
vor 12 Jahren
web.config - Weiterleitung zu vordefinierter Fehlerseite funktioniert nicht

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

16.842 Beiträge seit 2008
vor 12 Jahren

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ß

P
PeterRRR Themenstarter:in
50 Beiträge seit 2009
vor 12 Jahren

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.

16.842 Beiträge seit 2008
vor 12 Jahren

Mir ist durchaus bewusst wofür das ~ steht 😉

Bist Du sicher, dass die webconfig greift und der Hosting-Anbieter nichts drüber bügelt?

P
PeterRRR Themenstarter:in
50 Beiträge seit 2009
vor 12 Jahren

Ja, da bin ich mir sicher, da es 1.) auf dem eigenen Server läuft und 2.) ja auch lokal beim Testen nicht funktioniert.

G
538 Beiträge seit 2008
vor 12 Jahren

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)

16.842 Beiträge seit 2008
vor 12 Jahren

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.

P
PeterRRR Themenstarter:in
50 Beiträge seit 2009
vor 12 Jahren

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?

G
538 Beiträge seit 2008
vor 12 Jahren

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)

16.842 Beiträge seit 2008
vor 12 Jahren

Server.Transfer unterstützt keine Weiterleitung auf Plain HTML Seiten.

Siehe auch ASP.NET-Seitenübergänge: Response.Redirect versus Server.Transfer

P
PeterRRR Themenstarter:in
50 Beiträge seit 2009
vor 12 Jahren

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.

G
538 Beiträge seit 2008
vor 12 Jahren

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)

P
PeterRRR Themenstarter:in
50 Beiträge seit 2009
vor 12 Jahren

Ja, das wird wohl im Moment die einfachste Möglichkeit sein. Danke.