Como faço para obter o url completo da página, estou em C#
-
09-06-2019 - |
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?
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();