c# - ruta - obtener url en asp net
Cómo obtengo la URL completa de la página en la que estoy en C# (9)
Necesito poder acceder a la URL completa de la página en la que estoy desde un control de usuario. ¿Es solo cuestión de concatenar un grupo de variables de solicitud juntas? ¿De ser asi, cuales? ¿O hay una manera más sencilla?
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 esto te resulte útil!
Es mejor utilizar Request.Url.OriginalString
que Request.Url.ToString()
(según MSDN )
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, necesito 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.
Para ASP.NET Core
necesitarás deletrearlo:
@($"{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
entonces
@Context.Request.GetDisplayUrl()
El _ViewImports.cshtml
podría ser un mejor lugar para ese @using
Request.RawUrl
Si necesita el número de puerto también, puede usar
Request.Url.Authority
Ejemplo:
string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();
if (Request.ServerVariables["HTTPS"] == "on")
{
url = "https://" + url;
}
else
{
url = "http://" + url;
}
si necesita la URL completa como todo, desde 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")
Usualmente uso Request.Url.ToString()
para obtener la url completa (incluida la cadena de consulta), no se requiere concatenación.
Request.Url.AbsoluteUri
Esta propiedad hace todo lo que necesita, todo en una llamada sucinta.