Wie erhalte ich den aktuellen URL ohne Querystring?

Veröffentlicht: 07. Jul 2008

Das Problem

Innerhalb Ihrer ASP.NET-Anwendung möchten Sie den Besucher beispielsweise weiterleiten, indem Sie an die aktuelle URL Parameter anhängen. Oder Sie möchten eine Statistik über alle Seiten führen und dabei nur ganze ASPX-Seiten unterscheiden. Dazu benötigen Sie nur die URL der aktuellen Seite ohne die bereits übergebenen Parameter für den jetzigen Aufruf.

Die Lösung

Der erste Schritt ist, die aktuelle URL auszulesen, mit dem dann weiter gearbeitet wird. Hierzu hat das Reequest-Objekt die Eigenschaft Url, die ein Objekt der Klasse Uri darstellt. Diese Klasse bietet Funktionen zum Bearbeiten dieser Url und zum Auslesen einzelner Teile.

Über die Funktion GetLeftPart(…) der Klasse besteht die Möglichkeit, die URL bis zu einem gewissen Punkt gekürzt zu erhalten. GetLeftPart erwartet dafür einen Parameter vom Typ UriPartial, einer Enumeration mit den vier Werten:

Scheme

Authority

Path

Query

Scheme gibt dabei das Schema des URI zurück, beispielsweise „http://“, Authority die Domain inkl. Port und Schema, z.B. „http://localhost:81“. Mit UriPartial.Path als Parameter erhält man den Pfad zur Datei inkl. Authority und Schema, also „http://localhost:81/default.aspx“, und Query die komplette URL inkl. Aller Parameter („http://localhost:81/default.aspx?id=1“).

Somit stellt diese Funktion mit dem Parameter UriPartial.Path das Mittel der Wahl dar, um die URL ohne QueryString zu erhalten, in C# mittels:

string url = Request.Url.GetLeftPart(UriPartial.Path);

oder in VB.NET:

Dim url As String = Request.Url.GetLeftPart(UriPartial.Path)

Nächste Schritte

Sehen Sie sich auch die anderen Methoden der Klasse Uri an. Interessant in diesem Zusammenhang dürften auch die Eigenschaften PathAndQuery und LocalPath sein.

Weiterführende Links

Uri Class
http://msdn.microsoft.com/en-us/library/system.uri.aspx