253 votes

.NET - get protocole, hôte et port

Est-il une façon simple .NET pour obtenir rapidement le protocole actuel, l'hôte et le port? Par exemple, si je vais sur l'URL suivante:

http://www.mywebsite.com:80/pages/page1.aspx

J'ai besoin de retour:

http://www.mywebsite.com:80

Je sais que je peux utiliser la Demande.Url.AbsoluteUri pour obtenir l'URL complète, et je sais que je peux utiliser la Demande.Url.L'autorité d'obtenir l'hôte et le port, mais je ne suis pas sûr de la meilleure façon d'obtenir le protocole sans analyse de la chaîne d'URL.

Toutes les suggestions?

437voto

dthrasher Points 10641

Même si @Rick a accepté de répondre à cette question, il y a en fait une façon plus simple de faire cela, à l'aide de la mal nommée Uri.GetLeftPart() méthode.

Uri url = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string output = url.GetLeftPart(UriPartial.Authority);

Il y a un piège à l' GetLeftPart(), cependant. Si le port est le port par défaut pour le schéma, il sera nu. Depuis le port 80 est le port par défaut pour http, la sortie de l' GetLeftPart() dans mon exemple ci-dessus sera http://www.mywebsite.com.

Si le numéro de port avait été quelque chose d'autre que 80, il serait inclus dans le résultat.

184voto

Rick Points 1224

Le code suivant (c#) devrait faire l’affaire

67voto

Holger Points 1350

Eh bien, si vous faites cela dans Asp.Net ou avez accès à HttpContext.Current.Request je dirais que ce sont des manières plus faciles et plus générales de les obtenir :

J’espère que cette aide. :)

38voto

Haonan Tan Points 101

Une façon plus structurée pour obtenir ce consiste à utiliser de UriBuilder. Cela évite la manipulation de chaîne directe.

23voto

Dale Ragan Points 14495

Request.Url vous retourne l' Uri de la requête. Une fois que vous avez, vous pouvez récupérer pratiquement tout ce que vous voulez. Pour obtenir le protocole, appelez la propriété Scheme .

Échantillon :

J’espère que cela aide.

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