Me pregunto cuál es la mejor manera de obtener el dominio actual en ASP.NET.
Por ejemplo:
http://www.domainname.com/subdir/ debería producir http://www.domainname.com http://www.sub.domainname.com/subdir/ debería producir http://sub.domainname.com
Como guía, debería poder agregar una URL como "/Folder/Content/filename.html" (digamos que la generada por Url.RouteUrl () en ASP.NET MVC) directamente en la URL y debería funcionar.
asp.net
asp.net-mvc
domain-name
Matt Mitchell
fuente
fuente
Respuestas:
Misma respuesta que la de MattMitchell pero con algunas modificaciones. En su lugar, esto busca el puerto predeterminado.
fuente
Request.Url.Authority
como sugirió Korayem en lugar deRequest.Url.Host
yRequest.Url.Port
.Según este enlace, un buen punto de partida es:
Sin embargo, si el dominio es http://www.domainname.com:500, esto fallará.
Algo como lo siguiente es tentador para resolver esto:
Sin embargo, los puertos 80 y 443 dependerán de la configuración.
Como tal, debe usar
IsDefaultPort
como en la Respuesta aceptada anterior de Carlos Muñoz.fuente
Este es el esquema incluido.
fuente
¡ADVERTENCIA! Para cualquiera que use Current.Request .Url.Host. Comprenda que está trabajando en base a la SOLICITUD ACTUAL y que la solicitud actual NO SIEMPRE estará con su servidor y, a veces, puede estar con otros servidores.
Entonces, si usa esto en algo como Application_BeginRequest () en Global.asax, entonces el 99.9% del tiempo estará bien, pero el 0.1% puede obtener algo diferente al nombre de host de su propio servidor.
Un buen ejemplo de esto es algo que descubrí no hace mucho. Mi servidor tiende a golpear http://proxyjudge1.proxyfire.net/fastenv de vez en cuando. Application_BeginRequest () maneja con gusto esta solicitud, por lo que si llama a Request.Url.Host cuando realiza esta solicitud, obtendrá de vuelta proxyjudge1.proxyfire.net. Algunos de ustedes pueden estar pensando "no duh", pero vale la pena señalarlo porque fue un error muy difícil de notar ya que solo sucedió el 0.1% de las veces: P
Este error me ha obligado a insertar mi host de dominio como una cadena en los archivos de configuración.
fuente
Por qué no usar
Request.Url.Authority
Devuelve todo el dominio Y el puerto.
Aún necesita calcular http o https
fuente
Manera simple y corta (admite esquema, dominio y puerto):
Utilizar
Request.GetFullDomain()
fuente
De otra manera:
fuente
Qué tal si:
fuente
Usando UriBuilder:
fuente
Qué tal si:
fuente