J'ai rencontré cette question en cherchant un moyen de calculer une URL (permaliens dans l'application Web) à fournir dans certaines notifications par e-mail.
Ils ont été générés sur un autre fil, donc HttpContext
n'était pas disponible et je voulais éviter de mettre des informations relatives aux URL dans la table de file d'attente utilisée pour générer les e-mails.
Le code :
public static String GetCurrentAppDomainBasePath(String prefix = "http://")
{
return String.Format("{0}{1}{2}",
prefix,
System.Net.Dns.GetHostEntry("").HostName,
System.Web.HttpRuntime.AppDomainAppVirtualPath
);
}
La fonction renvoie le chemin virtuel complet comme : http://full-host-name/AppName
. Bien sûr, il y a quelques limitations : le protocole codé en dur ( http
, https etc.) et en utilisant hostname
au lieu de domain name
(échoue si plusieurs domaines sont définis sur une seule machine).