Necesito poder acceder a la URL completa de la página en la que me encuentro 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?¿Cómo obtengo la dirección URL completa de la página en la que estoy? C#
Respuesta
Normalmente uso Request.Url.ToString()
para obtener la URL completa (incluida la cadena de consulta), no se requiere concatenación.
Si la URL contiene '#', no se incluirán todos los caracteres después de #. –
@KrunalSisodiya No creo que nunca se envíe el hash de una URL al servidor, pero podría estar equivocado. – travis
'Request.Url.ToString()' no incluye queryString. –
Request.RawUrl
esto no devuelve la url completa. Si la URL completa es http://www.blah.com/1.1/home/main?a=1 Request.RawUrl devolverá 1.1/hom/main? A = 1 – jnoreiga
si necesita la URL completa, ya que todo el http a la cadena de consulta que necesitará para concatenar las siguientes variables
chicosRequest.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
Esto no tiene en cuenta los puertos no estándar (es decir, sin utilizar el puerto 80 para http) – Spongeboy
, podría utilizar Request.ServerVariables ("SERVER_PORT") para la detección de puertos. – armen
Tenga en cuenta que esta respuesta utiliza la sintaxis de VB.Net. En C#, use Request.ServerVariables ["HTTPS"] por ejemplo. – jaycer
, gracias, he usado una combinación de ambos su responde @Christian y @Jonathan por mi necesidad específica.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
No necesito que preocuparse de HTTP seguro, necesita la variable nombre del servidor y el RawUrl se encarga de la ruta del nombre de dominio e incluye la cadena de consulta si está presente.
También debe saber que RawUrl, a diferencia de la Solicitud.Url, representa la url de solicitud original, no asignada, si se está utilizando la asignación url. – harpo
SERVER_NAME a menudo no devuelve la URL "real" utilizada por el cliente. HTTP_HOST es probablemente la mejor forma si vas a cavar directamente ... también se pierde el simple HTTP-to-another-port. – user2864740
Request.Url.AbsoluteUri
Esta propiedad hace todo lo que necesita, todo en una llamada de susinct.
+1. Esta es la mejor respuesta. Debería preferirse a Request.Url.ToString(). –
* succint * ...... – Unbreakable
Si necesita el número de puerto también, 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;
}
Aquí está una lista de lo 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 le resulte útil!
1) También hay Request.RawUrl; 2) Request.Url puede lanzar una excepción en 'rutas muy mal solicitadas'. – user2864740
Respuesta muy útil, pero ¿no deberían los números de puerto ser consistentes para evitar confusiones (suponiendo que todos los ejemplos son para la misma solicitud? Por ejemplo, Autoridad y puerto implican puerto 80 pero AbsoluteUri contiene puerto 2000) –
'Request.QueryString' devuelve' q = qvalue' solo – Marcel
Es mejor usar Request.Url.OriginalString
de Request.Url.ToString()
(según MSDN)
Solo es mejor si realmente necesita la cadena original. – Dirk
@DirkEl enlace de MSDN anterior: "La cadena devuelta por el método ToString puede contener caracteres de control, que pueden dañar el estado de una aplicación de consola. Puede usar el método GetComponents con el formato UriFormat.SafeUnescaped para eliminar los caracteres de control de la respuesta cuerda." – Eni
Exactamente, y eso no tiene nada que ver con 'OriginalString'. – Dirk
Por ASP.NET Core
que necesita para explicarla:
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
O puede agregar una declaración utilizando a la vista:
@using Microsoft.AspNetCore.Http.Extensions
continuación
@Context.Request.GetDisplayUrl()
El _ViewImports.cshtml
podría ser un mejor lugar para que @using
- 1. En C++/Windows, ¿cómo obtengo el nombre de red de la computadora en la que estoy?
- 2. Obtener la URL completa de la página actual (PHP)
- 3. ¿Cómo obtener la URL completa de una página de Drupal?
- 4. Cómo obtener la URL de la página actual en C#
- 5. Cómo cambiar la página url
- 6. ¿Cómo obtengo la URL de una solicitud?
- 7. ¿Cómo obtengo la dirección IP de la persona que llama en un WebMethod?
- 8. ¿Cómo obtengo la ruta de un script de Python en el que me estoy ejecutando?
- 9. ¿Cómo obtengo la Url actual desde dentro de un FilterAttribute?
- 10. SharePoint obtiene la URL completa de la página actual en el código detrás de
- 11. obtener la página actual de la url
- 12. ¿Cómo imprimo la url completa con tweepy?
- 13. Cómo cambiar la URL que se muestra en el navegador sin salir de la página
- 14. ¿Cómo obtengo la url actual sin params en Yii?
- 15. Ajax.BeginForm devuelve la página completa
- 16. ¿Cómo obtengo la dirección remota de un cliente en servlet?
- 17. ¿Cómo obtengo la identificación de video de la URL? (Vimeo)
- 18. ¿Cómo obtengo la etiqueta URL al analizar URL de solicitud?
- 19. ¿Cómo obtengo la notificación de que la construcción local de Visual Studio está completa?
- 20. ¿Cómo obtengo la dirección física (MAC) de una dirección IP usando C#?
- 21. Forzar la representación de la página completa en Mobile Safari?
- 22. ¿Cómo obtengo la identificación del video de la URL? (DailyMotion)
- 23. ¿Cómo puedo cambiar la URL de la página sin actualizar la página?
- 24. ¿Cómo obtengo la dirección IP de la red local de una computadora mediante programación? (C#)
- 25. Cómo modificar la URL de la página en Google Analytics
- 26. Cómo obtener la URL de la página actual en PHP
- 27. ¿Cómo obtengo la ruta virtual completa de una aplicación ASP.NET?
- 28. Algoritmos que reconocen la dirección física en una página web
- 29. phantomjs no está esperando la carga de la página "completa"
- 30. ¿Cómo obtengo la dirección IP de un nodo Erlang?
Para cualquier persona en una WebFarm in equilibrio de carga .. cuidado con el número de puerto que aparece cuando se utiliza System.Url: http://stackoverflow.com/questions/7674850/get -original-url-without-non-standard-port-c – felickz