Pergunta

Eu preciso ser capaz de obter o URL completo da página, estou em um controle de usuário.É apenas uma questão de concatenação de um monte de Pedido de variáveis juntos?Se sim quais?Ou há mais simpiler forma?

Foi útil?

Solução

Eu normalmente uso Request.Url.ToString() para obter o url completo (incluindo querystring), sem concatenação necessária.

Outras dicas

Aqui está uma lista que eu normalmente se referem a este tipo de informações:

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

Espero que você vai encontrar este útil!

Request.Url.AbsoluteUri

Esta propriedade faz tudo o que você precisa, tudo em um sucinto chamada.

Pedido.RawUrl

se você precisa o URL completo como tudo, de http para a querystring você vai precisar para concatenar as variáveis a seguir

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

Para ASP.NET Core você vai precisar explicar:

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

Ou você pode adicionar uma instrução usando a sua opinião:

@using Microsoft.AspNetCore.Http.Extensions

em seguida,

@Context.Request.GetDisplayUrl()

O _ViewImports.cshtml pode ser um lugar melhor para que @using

Melhor usar Request.Url.OriginalString de Request.Url.ToString() (de acordo com MSDN)

Valeu galera, eu usei uma combinação de ambas as suas respostas @Cristã e @Jonathan para a minha necessidade específica.

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

Eu não precisa se preocupar em http seguro, necessário o nome da variável e o RawUrl lida com o caminho do nome de domínio e inclui a querystring se presente.

Se você precisar de número de porta também, você pode usar

Request.Url.Authority

Exemplo:

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

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

Tente o seguinte -

var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top