10 Stimmen

Server.Transfer in Global.asax

Ich habe einen benutzerdefinierten Fehlerhandler in der Application_Error-Methode von global.asax, wenn ein Fehler auftritt, verwende ich den folgenden Code, um den Benutzer zur Fehlerseite zu übertragen:

Server.Transfer("/Error/");

Ohne den tatsächlichen Seitennamen anzugeben, bricht der obige Code mit der Ausnahme "Fehler bei der Ausführung der Unteranforderung für /Error/" ab.

Wenn ich jedoch Server.Transfer("/Error/Default.aspx") verwende, funktioniert es einwandfrei ohne Probleme.

Auch Response.Redirect("/Error/") funktioniert einwandfrei, aber wir möchten weiterhin Server.Transfer verwenden, um die angezeigte URL in der Adressleiste beizubehalten, wenn die Fehlerseite angezeigt wird, sodass Benutzer die Seite einfach aktualisieren können, um den ursprünglichen fehlerhaften URL erneut aufzurufen.

Ich wäre dankbar, wenn jemand kommentieren könnte, wie die Server.Transfer-Methode funktioniert, ohne den tatsächlichen Seitenname anzugeben.

Vielen Dank.

15voto

Andrew Barber Punkte 38387

Server.Transfer benötigt den tatsächlichen virtuellen Pfad zu einer Ressource, die die benötigte Ausgabe liefert. Es geht nicht über IIS, um herauszufinden, was die Standarddokumente der Website sind. Daher weiß es nicht, was "/Error/" bedeutet, es sei denn, das ist ein tatsächlicher Dateiname.

Response.Redirect funktioniert, weil dies dem Browser ein 'moved' Ergebnis mit dieser relativen URL (/Error/) sendet und wenn der Browser die neue Anforderung für /Error/ macht, behandelt dies zuerst IIS und wendet die Standardeinstellungen für Dokumente an.

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