Quiero escribir un pequeño método auxiliar que devuelva la URL base del sitio. Esto es lo que se me ocurrió:
public static string GetSiteUrl()
{
string url = string.Empty;
HttpRequest request = HttpContext.Current.Request;
if (request.IsSecureConnection)
url = "https://";
else
url = "http://";
url += request["HTTP_HOST"] + "/";
return url;
}
¿Hay algún error en esto que se te ocurra? ¿Alguien puede mejorar esto?
c#
asp.net
uri
httprequest
Jaggu
fuente
fuente
Respuestas:
Prueba esto:
fuente
Eso es ;)
fuente
La
GetLeftPart
solución popular no es compatible con la versión PCL deUri
, desafortunadamente.GetComponents
Sin embargo, si necesita portabilidad, esto debería ser el truco:fuente
Creo que las respuestas anteriores no tienen en cuenta cuando el sitio no está en la raíz del sitio web.
Este es un controlador para WebApi:
fuente
Para mí, @ warlock parece la mejor respuesta aquí hasta ahora, pero siempre he usado esto en el pasado;
O en un controlador WebAPI;
lo cual es útil para que pueda elegir qué formato de escape desea. No estoy claro por qué hay dos implementaciones tan diferentes, y por lo que puedo decir, este método y @ warlock devuelven exactamente el mismo resultado en este caso, pero parece
GetLeftPart()
que también funcionaría para lasmailto
etiquetas similares de Uri que no son servidores .fuente
Este es un método mucho más infalible.
fuente
/
si aloja en algún dominio de aplicación, por ejemplo, su servidor / nombre devoy con
fuente
Según lo que escribió Warlock, descubrí que la raíz de la ruta virtual es necesaria si no está alojado en la raíz de su web. (Esto funciona para controladores MVC Web API)
fuente
Estoy usando el siguiente código de Application_Start
String baseUrl = Path.GetDirectoryName(HttpContext.Current.Request.Url.OriginalString);
fuente
Esto funciona para mi.
Entonces, si desea acceder a su nombre de dominio, considere incluir el nombre de la aplicación en caso de:
====================================
Para el dev.x.us/web
devuelve este texto fuerte
fuente
Por favor use el siguiente código
fuente
fuente
¿podría agregar el puerto para el puerto no 80 / SSL?
algo como:
y usar eso en el resultado final?
fuente
Request.Url.Authority
incluirá el número de puerto si no es estándar