¿Hay una manera simple en .NET para obtener rápidamente el protocolo, el host y el puerto actuales? Por ejemplo, si estoy en la siguiente URL:
http://www.mywebsite.com:80/pages/page1.aspx
Necesito volver:
http://www.mywebsite.com:80
Sé que puedo usar Request.Url.AbsoluteUri
para obtener la URL completa, y sé que puedo usar Request.Url.Authority
para obtener el host y el puerto, pero no estoy seguro de la mejor manera de obtener el protocolo sin analizar la cadena de URL.
¿Alguna sugerencia?
Respuestas:
El siguiente código (C #) debería hacer el truco
fuente
Uri.GetLeftPart
como señala @dthrasherAunque @Rick tiene la respuesta aceptada para esta pregunta, en realidad hay una forma más corta de hacerlo, utilizando el
Uri.GetLeftPart()
método mal nombrado .Sin
GetLeftPart()
embargo, hay una trampa . Si el puerto es el puerto predeterminado para el esquema, lo eliminará. Como el puerto 80 es el puerto predeterminado para http, la salida deGetLeftPart()
mi ejemplo anterior seráhttp://www.mywebsite.com
.Si el número de puerto fuera distinto de 80, se incluiría en el resultado.
fuente
Uri
clase de esta manera. Hay una multitud de casos en los que este constructor arrojará una excepción. Para la mayoría de los casos, prefiero que mi código sea un poco más indulgente antes de abortar la tarea en cuestión.Bueno, si está haciendo esto en Asp.Net o tiene acceso a HttpContext.Current.Request, diría que estas son formas más fáciles y más generales de obtenerlos:
Espero que esto ayude. :)
fuente
Una forma más estructurada de obtener esto es usar UriBuilder. Esto evita la manipulación directa de cadenas.
fuente
Request.Url le devolverá el Uri de la solicitud. Una vez que tenga eso, puede recuperar casi cualquier cosa que desee. Para obtener el protocolo, llame a la propiedad Scheme .
Muestra:
Espero que esto ayude.
fuente
Aún más corto, puede requerir una ASP.Net más nueva:
La enumeración UriComponents le permite especificar qué componente (s) del URI desea incluir.
fuente
Muy similar a la respuesta de Holger. Si necesita tomar la URL puede hacer algo como:
La clase Uri proporciona una amplia gama de métodos, muchos de los cuales no he enumerado.
En mi caso, necesitaba agarrar
LocalHost
junto con elPort Number
, así que esto es lo que hice:Que con éxito agarró:
http://localhost:12345
fuente