Je me demande quelle est la meilleure façon d'obtenir le domaine actuel dans ASP.NET?
Par exemple:
http://www.domainname.com/subdir/ doit renvoyer http://www.domainname.com http://www.sub.domainname.com/subdir/ doit renvoyer http://sub.domainname.com
À titre indicatif, je devrais pouvoir ajouter une URL comme "/Folder/Content/filename.html" (par exemple, généré par Url.RouteUrl () dans ASP.NET MVC) directement sur l'URL et cela devrait fonctionner.
asp.net
asp.net-mvc
domain-name
Matt Mitchell
la source
la source
Réponses:
Même réponse que celle de MattMitchell mais avec quelques modifications. Cela vérifie plutôt le port par défaut.
la source
Request.Url.Authority
comme Korayem suggéré au lieu deRequest.Url.Host
etRequest.Url.Port
.Selon ce lien, un bon point de départ est:
Cependant, si le domaine est http://www.domainname.com:500, cela échouera.
Quelque chose comme ce qui suit est tentant de résoudre ce problème:
Cependant, les ports 80 et 443 dépendront de la configuration.
En tant que tel, vous devez utiliser
IsDefaultPort
comme dans la réponse acceptée ci-dessus de Carlos Muñoz.la source
Ceci est inclus dans le schéma.
la source
AVERTISSEMENT! À toute personne qui utilise Current.Request .Url.Host. Comprenez que vous travaillez sur la base de la DEMANDE ACTUELLE et que la demande actuelle ne sera pas TOUJOURS avec votre serveur et peut parfois l'être avec d'autres serveurs.
Donc, si vous l'utilisez dans quelque chose comme Application_BeginRequest () dans Global.asax, alors 99,9% du temps, ça ira, mais 0,1% vous pourriez obtenir autre chose que le nom d'hôte de votre propre serveur.
Un bon exemple de ceci est quelque chose que j'ai découvert il n'y a pas longtemps. Mon serveur a tendance à frapper http://proxyjudge1.proxyfire.net/fastenv de temps en temps. Application_BeginRequest () gère volontiers cette requête, donc si vous appelez Request.Url.Host lors de cette requête, vous récupérerez proxyjudge1.proxyfire.net. Certains d'entre vous pensaient peut-être "non duh" mais il vaut la peine de le noter car c'était un bogue très difficile à remarquer car cela n'arrivait que 0,1% du temps: P
Ce bogue m'a obligé à insérer mon hôte de domaine sous forme de chaîne dans les fichiers de configuration.
la source
Pourquoi ne pas utiliser
Request.Url.Authority
Il renvoie le domaine entier ET le port.
Vous devez toujours comprendre http ou https
la source
Moyen simple et court (il prend en charge le schéma, le domaine et le port):
Utilisation
Request.GetFullDomain()
la source
Autrement:
la source
Que diriez-vous:
la source
Utilisation d'UriBuilder:
la source
Que diriez-vous:
la source