Frage

Ich muss in der Lage sein, über ein Benutzersteuerelement auf die vollständige URL der Seite zuzugreifen, auf der ich mich befinde.Geht es nur darum, eine Reihe von Request-Variablen miteinander zu verketten?Wenn ja, welche?Oder gibt es einen einfacheren Weg?

War es hilfreich?

Lösung

Normalerweise benutze ich Request.Url.ToString() Um die vollständige URL (einschließlich Abfragezeichenfolge) zu erhalten, ist keine Verkettung erforderlich.

Andere Tipps

Hier ist eine Liste, auf die ich normalerweise für diese Art von Informationen verweise:

Request.ApplicationPath :   /virtual_dir
Request.CurrentExecutionFilePath :  /virtual_dir/webapp/page.aspx
Request.FilePath :  /virtual_dir/webapp/page.aspx
Request.Path :  /virtual_dir/webapp/page.aspx
Request.PhysicalApplicationPath :   d:\Inetpub\wwwroot\virtual_dir\
Request.QueryString :   /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.AbsolutePath :  /virtual_dir/webapp/page.aspx
Request.Url.AbsoluteUri :   http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Host :  localhost
Request.Url.Authority : localhost:80
Request.Url.LocalPath : /virtual_dir/webapp/page.aspx
Request.Url.PathAndQuery :  /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Port :  80
Request.Url.Query : ?q=qvalue
Request.Url.Scheme :    http
Request.Url.Segments :  /
    virtual_dir/
    webapp/
    page.aspx

Hoffentlich finden Sie dies nützlich!

Request.Url.AbsoluteUri

Diese Immobilie bietet alles, was Sie brauchen, alles in einem kurzen Anruf.

Request.RawUrl

Wenn Sie die vollständige URL vom http bis zum Querystring benötigen, müssen Sie die folgenden Variablen verketten

Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME") 
Request.ServerVariables("SCRIPT_NAME") 
Request.ServerVariables("QUERY_STRING")

Für ASP.NET Core Sie müssen es buchstabieren:

@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")

Oder Sie können Ihrer Ansicht eine using-Anweisung hinzufügen:

@using Microsoft.AspNetCore.Http.Extensions

Dann

@Context.Request.GetDisplayUrl()

Der _ViewImports.cshtml könnte ein besserer Ort dafür sein @using

Besser zu verwenden Request.Url.OriginalString als Request.Url.ToString() (entsprechend MSDN)

Danke Leute, ich habe für meinen speziellen Bedarf eine Kombination Ihrer beiden Antworten @Christian und @Jonathan verwendet.

"http://" + Request.ServerVariables["SERVER_NAME"] +  Request.RawUrl.ToString()

Ich muss mir keine Gedanken über sicheres http machen, ich benötige die Servername-Variable und die RawUrl verarbeitet den Pfad vom Domänennamen und schließt die Abfragezeichenfolge ein, falls vorhanden.

Wenn Sie auch die Portnummer benötigen, können Sie diese verwenden

Request.Url.Authority

Beispiel:

string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();

if (Request.ServerVariables["HTTPS"] == "on")
{
    url = "https://" + url;
}
else 
{
    url = "http://" + url;
}

Versuche Folgendes -

var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top