Eu preciso ser capaz de acessar a URL completa da página em que estou usando um controle de usuário. É apenas uma questão de concatenar várias variáveis de solicitação juntas? Se sim, quais são? Ou existe uma maneira mais simples?
Eu preciso ser capaz de acessar a URL completa da página em que estou usando um controle de usuário. É apenas uma questão de concatenar várias variáveis de solicitação juntas? Se sim, quais são? Ou existe uma maneira mais simples?
Respostas:
Eu costumo usar Request.Url.ToString()
para obter o URL completo (incluindo a string de consulta), sem necessidade de concatenação.
Request.Url.ToString()
não inclui include queryString.
Aqui está uma lista à qual normalmente me refiro para esse tipo de informação:
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ê ache isso útil!
Request.QueryString
retorna q=qvalue
somente
Request.Url.AbsoluteUri
Esta propriedade faz tudo o que você precisa, tudo em uma ligação sucinta.
Para ASP.NET Core
que você precisa explicitar:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
Ou você pode adicionar uma instrução using à sua exibição:
@using Microsoft.AspNetCore.Http.Extensions
então
@Context.Request.GetDisplayUrl()
A _ViewImports.cshtml
poderia ser um lugar melhor para isso@using
Request.RawUrl
se você precisar da URL completa, como tudo, do http à string de consulta, precisará concatenar as seguintes variáveis
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
Melhor usar do Request.Url.OriginalString
que Request.Url.ToString()
(de acordo com o MSDN )
OriginalString
.
Obrigado pessoal, usei uma combinação das duas respostas @Christian e @Jonathan para minha necessidade específica.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
Não preciso me preocupar com http seguro, precisava da variável servername e o RawUrl lida com o caminho do nome do domínio e inclui a querystring, se presente.
Tente o seguinte -
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();