Ich möchte die genaue URL erhalten, die der Benutzer in den Browser eingegeben hat. Natürlich könnte ich immer etwas wie Request.Url.ToString()
verwenden, aber das gibt mir nicht, was ich in der folgenden Situation will:
http://www.mysite.com/rss
Mit der URL über was Request.Url.ToString()
mir geben würde ist:
http://www.mysite.com/rss/Default.aspx
Weiß jemand, wie man das erreicht?
Ich habe es schon versucht:
Request.Url
Request.RawUrl
this.Request.ServerVariables["CACHE_URL"]
this.Request.ServerVariables["HTTP_URL"]
((HttpWorkerRequest)((IServiceProvider)HttpContext.Current).GetService(typeof(HttpWorkerRequest))).GetServerVariable( "CACHE_URL")
((HttpWorkerRequest)((IServiceProvider)HttpContext.Current).GetService(typeof(HttpWorkerRequest))).GetServerVariable( "HTTP_URL")
Bearbeiten: Sie möchten die HttpWorkerRequest.GetServerVariable()
mit dem Schlüssel HTTP_URL
oder CACHE_URL
. Beachten Sie, dass sich das Verhalten zwischen IIS 5 und IIS 6 unterscheidet (siehe Dokumentation der Schlüssel).
Um auf alle Servervariablen zugreifen zu können (falls Sie null
erhalten), greifen Sie direkt auf die HttpWorkerRequest:
Denken Sie auch daran, dass die "genaue URL, die der Benutzer eingegeben hat" möglicherweise nie auf dem Server verfügbar ist. Jeder Link in der Kette von den Fingern zum Server kann die Anfrage leicht modifizieren.
Wenn ich beispielsweise xheo.com in mein Browserfenster tippe, wird IE automatisch in Ссылка konvertiert. Wenn die Anfrage dann an IIS geht, sagt sie zum Browser - Sie möchten wirklich die Standardseite bei Ссылка . Der Browser reagiert also, indem er nach der Standardseite fragt.
Das Gleiche passiert mit HTTP 30x Redirect-Anfragen. Der Server wird wahrscheinlich nur die letzte Anfrage des Browsers sehen.
Versuchen Sie es mit Request.Url.OriginalString
Könnte dir das geben, wonach du suchst.
Es ist möglich, dass Sie nur einige der Werte aus dem Anfrageobjekt kombinieren müssen, um die genaue eingegebene URL neu zu erstellen:
%Vor%Geben Sie genau die Adresse Ссылка ein:
%Vor%