Comment puis-je obtenir le baseurl de site?
Je veux écrire une petite aide de la méthode qui retourne l'URL de base du site. C'est ce que je suis venu avec:
public static string GetSiteUrl()
{
string url = string.Empty;
HttpRequest request = HttpContext.Current.Request;
if (request.IsSecureConnection)
url = "https://";
else
url = "http://";
url += request["HTTP_HOST"] + "/";
return url;
}
Est-il une erreur dans ce que vous pouvez penser? Quelqu'un peut-il améliorer sur ce point?
- Cochez cette stackoverflow.com/questions/3933662/...
- double possible de Comment puis-je obtenir mon webapp de l'URL de base dans les ASP.NET MVC?
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
C'est tout 😉
Le populaire
GetLeftPart
solution n'est pas pris en charge dans le PCL version deUri
, malheureusement.GetComponents
est, toutefois, si vous avez besoin de portabilité, cela devrait faire l'affaire:Pour moi, @démoniste se présente comme la meilleure réponse jusqu'ici, mais j'ai toujours utilisé dans le passé;
Ou dans un WebAPI contrôleur;
qui est à portée de main afin que vous puissiez choisir ce que échapper format que vous voulez. Je ne suis pas clair pourquoi il y a deux implémentations différentes, et autant que je puisse en dire, cette méthode et @démoniste retour exactement le même résultat dans ce cas, mais il semble que
GetLeftPart()
également de travailler pour les non Uri du serveur est commemailto
tags par exemple.Je crois que les réponses ci-dessus ne prend pas en considération lorsque le site n'est pas à la racine du site web.
C'est un pour WebApi contrôleur:
Je aller avec
C'est beaucoup plus infaillible méthode.
/
si vous hébergez dans certains domaine d'application de l'e.g votreserveur/nom_application/yourrootpathBasé sur ce Sorcier a écrit, j'ai trouvé que le chemin d'accès virtuel racine est nécessaire si vous n'êtes pas hébergé à la racine de votre site web. (Cela fonctionne MVC, Web API contrôleurs)
Cela fonctionne pour moi.
Donc, si vous voulez accéder à votre nom de domaine n'envisager d'inclure le nom de l'application en cas de:
Je suis en utilisant le code suivant à partir de Application_Start
String baseUrl = Path.GetDirectoryName(HttpContext.Current.Request.Url.OriginalString);
Veuillez utiliser le ci-dessous code
vous pourriez peut-être ajouter dans le port pour non port 80/SSL?
quelque chose comme:
et de l'utiliser dans le résultat final?
Request.Url.Authority
va inclure le numéro de port si c'est non-standard