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.QueryStringq=qvaluesolo regresa
Request.Url.AbsoluteUri
Esta propiedad hace todo lo que necesita, todo en una llamada sucinta.
Porque ASP.NET Corenecesitará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.cshtmlpodrí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.OriginalStringque 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();