47 votes

Comment obtenir l'URL racine du site ?

Je souhaite obtenir dynamiquement l'URL racine absolue d'une application ASP.NET. Il doit s'agir de l'URL racine complète de l'application sous la forme : http(s)://hostname(:port)/

J'ai utilisé cette méthode statique:

 public static string GetSiteRootUrl()
{
    string protocol;

    if (HttpContext.Current.Request.IsSecureConnection)
        protocol = "https";
    else
        protocol = "http";

    StringBuilder uri = new StringBuilder(protocol + "://");

    string hostname = HttpContext.Current.Request.Url.Host;

    uri.Append(hostname);

    int port = HttpContext.Current.Request.Url.Port;

    if (port != 80 && port != 443)
    {
        uri.Append(":");
        uri.Append(port.ToString());
    }

    return uri.ToString();
}

MAIS, et si je n'ai pas HttpContext.Current dans la portée ? J'ai rencontré cette situation dans un CacheItemRemovedCallback .

26voto

Jonathan Wood Points 26443

Vous pouvez essayer d'obtenir l'URL brute et de tout couper après la barre oblique du chemin. Vous pouvez également incorporer ResolveUrl("~/") .

12voto

Denny Jacob Points 1
public static string GetAppUrl()
{
    // This code is tested to work on all environments
    var oRequest = System.Web.HttpContext.Current.Request;
    return oRequest.Url.GetLeftPart(System.UriPartial.Authority)
        + System.Web.VirtualPathUtility.ToAbsolute("~/");

}

6voto

Uri Gorobets Points 31
public static string GetFullRootUrl()
{   
    HttpRequest request = HttpContext.Current.Request;
    return request.Url.AbsoluteUri.Replace(request.Url.AbsolutePath, String.Empty);
}

1voto

erionpc Points 13

Cela a toujours fonctionné pour moi

 string root = Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, "");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X