Je veux écrire une petite méthode d'aide qui renvoie l'URL de base du site. Voici ce que j'ai proposé:
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;
}
Y a-t-il une erreur à laquelle vous pouvez penser? Quelqu'un peut-il améliorer cela?
c#
asp.net
uri
httprequest
Jaggu
la source
la source
Réponses:
Essaye ça:
la source
C'est tout ;)
la source
La
GetLeftPart
solution populaire n'estUri
malheureusement pas prise en charge dans la version PCL de .GetComponents
est, cependant, si vous avez besoin de portabilité, cela devrait faire l'affaire:la source
Je pense que les réponses ci-dessus ne tiennent pas compte du moment où le site n'est pas à la racine du site Web.
Ceci est un pour le contrôleur WebApi:
la source
Pour moi, @ warlock's semble être la meilleure réponse ici jusqu'à présent, mais j'ai toujours utilisé cela dans le passé;
Ou dans un contrôleur WebAPI;
ce qui est pratique pour que vous puissiez choisir le format d'échappement souhaité. Je ne sais pas pourquoi il existe deux implémentations aussi différentes, et pour autant que je sache, cette méthode et @ warlock retournent exactement le même résultat dans ce cas, mais il semble que
GetLeftPart()
cela fonctionnerait également pour lesmailto
balises comme les Uri non serveur, par exemple .la source
C'est une méthode beaucoup plus infaillible.
la source
/
si vous hébergez dans un domaine d'application, par exemple yourserver / yourapplicationname / yourrootpathJe vais avec
la source
Sur la base de ce que Warlock a écrit, j'ai trouvé que la racine du chemin virtuel est nécessaire si vous n'êtes pas hébergé à la racine de votre site Web. (Cela fonctionne pour les contrôleurs d'API Web MVC)
la source
J'utilise le code suivant d'Application_Start
String baseUrl = Path.GetDirectoryName(HttpContext.Current.Request.Url.OriginalString);
la source
Cela fonctionne pour moi.
Donc, si vous souhaitez accéder à votre nom de domaine, pensez à inclure le nom de l'application en cas de:
=====================================
Pour le dev.x.us/web
il renvoie ce texte fort
la source
Veuillez utiliser le code ci-dessous
la source
la source
vous pourriez éventuellement ajouter dans le port pour non port 80 / SSL?
quelque chose comme:
et l'utiliser dans le résultat final?
la source
Request.Url.Authority
inclura le numéro de port s'il n'est pas standard