pensé que me gustaría compartir mi acercamiento a hacer esto en ASP.NET MVC utilizando la clase Uri
y un poco de magia de extensión.
public static class UrlHelperExtensions
{
public static string AbsolutePath(this UrlHelper urlHelper,
string relativePath)
{
return new Uri(urlHelper.RequestContext.HttpContext.Request.Url,
relativePath).ToString();
}
}
Usted puede entonces enviar una ruta absoluta usando:
// gives absolute path, e.g. https://example.com/customers
Url.AbsolutePath(Url.Action("Index", "Customers"));
se ve un poco feo tener el método anidado llama así que prefiero para ampliar aún más UrlHelper
con los métodos comunes de actuación para que pueda hacer:
// gives absolute path, e.g. https://example.com/customers
Url.AbsoluteAction("Index", "Customers");
o
Url.AbsoluteAction("Details", "Customers", new{id = 123});
La clase extensión completa es la siguiente:
public static class UrlHelperExtensions
{
public static string AbsolutePath(this UrlHelper urlHelper,
string relativePath)
{
return new Uri(urlHelper.RequestContext.HttpContext.Request.Url,
relativePath).ToString();
}
public static string AbsoluteAction(this UrlHelper urlHelper,
string actionName,
string controllerName)
{
return AbsolutePath(urlHelper,
urlHelper.Action(actionName, controllerName));
}
public static string AbsoluteAction(this UrlHelper urlHelper,
string actionName,
string controllerName,
object routeValues)
{
return AbsolutePath(urlHelper,
urlHelper.Action(actionName,
controllerName, routeValues));
}
}
2 respuestas relacionadas en: http: // stackoverflow .com/questions/7413466/how-can-i-get-the-baseurl-of-site y http://stackoverflow.com/questions/3933662/in-asp-net-what-is-the-quickest-way -to-get-the-base-url-for-a-request –