¿Cómo puedo obtener la url completa de la página que estoy en en C#
-
09-06-2019 - |
Pregunta
Necesito ser capaz de obtener en la dirección URL completa de la página yo soy de un control de usuario.Es sólo una cuestión de la concatenación de un montón de Solicitud de variables juntos?Si es así ¿cuáles?O es que hay un más simpiler manera?
Solución
Yo normalmente uso Request.Url.ToString()
para obtener la dirección url completa (incluyendo querystring), no concatenación necesaria.
Otros consejos
Aquí está una lista de las que normalmente se refieren a 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
Esperamos que lo encuentre útil!
Request.Url.AbsoluteUri
Esta propiedad tiene todo lo que necesita, todo en un sucinto de la llamada.
Solicitud.RawUrl
si usted necesita la dirección URL completa como de todo, desde el http para la cadena de consulta que se necesita para 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")
Para ASP.NET Core
tendrás que explicárselo:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
O usted puede agregar una instrucción a la vista:
@using Microsoft.AspNetCore.Http.Extensions
entonces
@Context.Request.GetDisplayUrl()
El _ViewImports.cshtml
podría ser un mejor lugar para que @using
Mejor usar Request.Url.OriginalString
de Request.Url.ToString()
(de acuerdo a MSDN)
Gracias chicos, he utilizado una combinación de ambos, sus respuestas @Cristiano y @Jonathan por mi necesidad específica.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
Yo no necesita preocuparse acerca de http seguro, necesita del nombre de la variable y el RawUrl se encarga de la ruta de acceso del nombre de dominio y que incluye la cadena de consulta si está presente.
Si usted necesita el número de puerto también, usted puede utilizar
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;
}
Tratar el siguiente -
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();