Necesito poder acceder a la URL completa de la página en la que estoy desde un control de usuario. ¿Es solo una cuestión de concatenar un conjunto de variables de solicitud juntas? ¿De ser asi, cuales? ¿O hay una manera más simple?
Necesito poder acceder a la URL completa de la página en la que estoy desde un control de usuario. ¿Es solo una cuestión de concatenar un conjunto de variables de solicitud juntas? ¿De ser asi, cuales? ¿O hay una manera más simple?
Respuestas:
Usualmente uso Request.Url.ToString()
para obtener la url completa (incluida la cadena de consulta), no se requiere concatenación.
Request.Url.ToString()
no incluye queryString.
Aquí hay una lista a la que normalmente me refiero para este tipo de información:
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 encuentres esto útil!
Request.QueryString
q=qvalue
solo regresa
Request.Url.AbsoluteUri
Esta propiedad hace todo lo que necesita, todo en una llamada sucinta.
Porque ASP.NET Core
necesitarás explicarlo:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
O puede agregar una declaración de uso a su vista:
@using Microsoft.AspNetCore.Http.Extensions
luego
@Context.Request.GetDisplayUrl()
El _ViewImports.cshtml
podría ser un mejor lugar para eso@using
Request.RawUrl
si necesita la URL completa como todo, desde el http hasta la cadena de consulta, deberá concatenar las siguientes variables
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
Mejor de usar Request.Url.OriginalString
que Request.Url.ToString()
(según MSDN )
OriginalString
.
Gracias chicos, utilicé una combinación de sus respuestas @Christian y @Jonathan para mi necesidad específica.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
No necesito preocuparme por http seguro, necesitaba la variable de nombre de servidor y RawUrl maneja la ruta desde el nombre de dominio e incluye la cadena de consulta si está presente.
Intenta lo siguiente:
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();