Saltar al contenido

¿Cómo puedo obtener la URL base de mi aplicación web en ASP.NET MVC?

Este dilema se puede tratar de diversas formas, pero en este caso te dejamos la respuesta más completa para nosotros.

Solución:

Suponiendo que tiene un objeto Solicitud disponible, puede usar:

string.Format("0://12", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));

Si no está disponible, puede acceder a él a través del contexto:

var request = HttpContext.Current.Request

Entonces, ninguno de los enumerados aquí funcionó para mí, pero usando algunas de las respuestas, obtuve algo que funcionaba:

public string GetBaseUrl()

    var request = HttpContext.Current.Request;
    var appUrl = HttpRuntime.AppDomainAppVirtualPath;

    if (appUrl != "/") 
        appUrl = "/" + appUrl;

    var baseUrl = string.Format("0://12", request.Url.Scheme, request.Url.Authority, appUrl);

    return baseUrl;

Actualización para ASP.NET Core/MVC 6:

ASP.NET Core hace que este proceso sea un poco más doloroso, especialmente si está en lo profundo de su código. Tienes 2 opciones para llegar al HttpContext

1) Pásalo desde tu controller:

var model = new MyClass(HttpContext);

entonces en model:

private HttpContext currentContext;

public MyClass(HttpContext currentContext)

    this.currentContext = currentContext;

2) Quizás la forma más limpia es inyectarlo en su clase, lo que comienza registrando los tipos en su Startup:

public void ConfigureServices(IServiceCollection services)

    // Add framework services.
    services.AddMvc();

    services.AddTransient();
    services.TryAddSingleton();

luego haz que te lo inyecten así:

private HttpContext currentContext;

public MyClass(IHttpContextAccessor httpContextAccessor)

    currentContext = httpContextAccessor.HttpContext;

en cualquier caso, aquí está la actualización para .NET CoreGetBaseUrl():

public string GetBaseUrl()

    var request = currentContext.Request;

    var host = request.Host.ToUriComponent();

    var pathBase = request.PathBase.ToUriComponent();

    return $"request.Scheme://hostpathBase";

En codigo:

Url.Content("~/");

Sintaxis de maquinilla de afeitar MVC3:

@Url.Content("~/")

Acuérdate de que te damos el privilegio valorar este ensayo si chocaste tu enigma .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *