Y a-t-il un moyen d'obtenir HttpContext.Current.Request.Url.Host
et HttpContext.Current.Request.ApplicationPath
Dans un appel?
Quelque chose comme "URL complète de l'application"?
EDIT: Clarification - Ce dont j'ai besoin, c'est la partie dans []:
http://[www.mysite.com/mywebapp]/Pages/Default.aspx
Je demande simplement par curiosité.
Edit 2: Merci pour toutes les réponses, mais aucun d'entre eux n'étaient exactement ce que je cherchais. FYI, j'ai résolu le problème de cette façon (mais je suis toujours intéressé à savoir s'il y a une manière plus lisse):
public string GetWebAppRoot()
{
if(HttpContext.Current.Request.ApplicationPath == "/")
return "http://" + HttpContext.Current.Request.Url.Host;
else
return "http://" + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath;
}
Cela ne fonctionnait pas sur mon localhost avec un numéro de port ainsi de modification mineure:
private string GetWebAppRoot()
{
string Host = (HttpContext.Current.Request.Url.IsDefaultPort) ?
HttpContext.Current.Request.Url.Host :
HttpContext.Current.Request.Url.Authority;
Host = String.Format("{0}://{1}", HttpContext.Current.Request.Url.Scheme, Host);
if (HttpContext.Current.Request.ApplicationPath == "/")
return Host;
else
return Host + HttpContext.Current.Request.ApplicationPath;
}
Ce que vous devriez vraiment faire est:
return String.Format("{0}://{1}/", Request.Url.Scheme, Request.Url.Host);
De cette façon, cela fonctionne si vous utilisez https (ou un autre schéma!)
Merci pour toutes les réponses, mais aucun d'entre eux n'était exactement ce que je cherchais. FYI, j'ai résolu le problème de cette façon (mais je suis toujours intéressé à savoir s'il y a une manière plus lisse):
public string GetWebAppRoot()
{
if(HttpContext.Current.Request.ApplicationPath == "/")
return "http://" + HttpContext.Current.Request.Url.Host;
else
return "http://" + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.ApplicationPath;
}
Chèque ce post :
public static Uri GetBaseUrl(HttpRequest request)
{
Uri contextUri = new Uri(request.Url, request.RawUrl);
UriBuilder realmUri = new UriBuilder(contextUri) { Path = request.ApplicationPath, Query = null, Fragment = null };
return realmUri.Uri;
}
public static string GetAbsoluteUrl(HttpRequest request, string relativeUrl)
{
return new Uri(GetBaseUrl(request), VirtualPathUtility.ToAbsolute(relativeUrl)).AbsoluteUri;
}
Si vous n'obtenez pas ce dont vous avez besoin de GetBaseURL directement, il devrait être possible de faire:
GetAbsoluteUrl(HttpContext.Current.Request, "/")
HttpContext.Current.Request.Url.AbsoluteUri