104 votes

Ce qui ' s la meilleure méthode dans ASP.NET pour obtenir le domaine actuel ?

Je me demande quelle est la meilleure façon pour obtenir le courant de domaine est en ASP.NET?

Par exemple:

http://www.domainname.com/subdir/ devrait donner http://www.domainname.com http://www.sub.domainname.com/subdir/ devrait donner http://sub.domainname.com

Comme un guide, je devrais être en mesure d'ajouter une url de la forme "/Folder/Content/filename.html" (comme disent généré par Url.RouteUrl() dans ASP.NET MVC) tout droit sur l'URL et cela devrait fonctionner.

190voto

Carlos Muñoz Points 6208

Même réponse que de MattMitchell mais avec quelques modifications. Ceci vérifie le port par défaut à la place.

42voto

Matt Mitchell Points 17005

Par ce lien, un bon point de départ est:

Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host 

Cependant, si le domaine est http://www.domainname.com:500 ce sera un échec.

Quelque chose comme ce qui suit est tentant de résoudre ce problème:

int defaultPort = Request.IsSecureConnection ? 443 : 80;
Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host 
  + (Request.Url.Port != defaultPort ? ":" + Request.Url.Port : "");

Toutefois, le port 80 et 443 dépendra de la configuration.

En tant que tel, vous devez utiliser IsDefaultPort comme dans la Accepté de Répondre au-dessus de Carlos Muñoz.

29voto

izlence Points 101
<pre><code></code><p>Ceci est inclus système.</p></pre>

20voto

Thirlan Points 387

AVERTISSEMENT! Toute personne qui utilise les Courants.Demande.Url.De l'hôte. Comprendre que vous êtes de travail basé sur la DEMANDE ACTUELLE et la demande ne sera pas TOUJOURS avec votre serveur et peut parfois être avec d'autres serveurs.

Donc, si vous utilisez ce dans quelque chose comme, Application_BeginRequest ().asax, puis à 99,9% du temps il va faire beau, mais de 0,1%, vous pourriez obtenir quelque chose d'autre que votre propre nom d'hôte du serveur.

Un bon exemple de ceci est quelque chose que j'ai découvert il n'ya pas longtemps. Mon serveur a tendance à frapper http://proxyjudge1.proxyfire.net/fastenv de temps à autre. Application_BeginRequest() un plaisir de poignées de cette demande, donc, si vous Demande d'appel.Url.Hôte lorsqu'il fait cette demande, vous obtenez de retour proxyjudge1.proxyfire.net. Certains d'entre vous pourraient être en train de penser "non duh" mais à noter parce que c'était très dur bug de préavis, étant donné qu'il ne s'est passé de 0,1% du temps : P

Ce bug m'a forcé à insérer mon hôte de domaine comme une chaîne de caractères dans les fichiers de configuration.

14voto

Korayem Points 2665

Pourquoi ne pas utiliser

``

Elle renvoie l’ensemble du domaine et le port.

Vous avez encore besoin de comprendre http ou https

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X