servidor ruta obtener nombre net navegador dominio asp absoluta c# asp.net user-controls

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!



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.