Existe-t-il un moyen simple dans .NET d'obtenir rapidement le protocole, l'hôte et le port actuels? Par exemple, si je suis sur l'URL suivante:
http://www.mywebsite.com:80/pages/page1.aspx
Je dois retourner:
http://www.mywebsite.com:80
Je sais que je peux utiliser Request.Url.AbsoluteUri
pour obtenir l'URL complète, et je sais que je peux utiliser Request.Url.Authority
pour obtenir l'hôte et le port, mais je ne suis pas sûr de la meilleure façon d'obtenir le protocole sans analyser la chaîne d'URL.
Aucune suggestion?
Réponses:
Le code (C #) suivant devrait faire l'affaire
la source
Uri.GetLeftPart
comme le souligne @dthrasherMême si @Rick a la réponse acceptée pour cette question, il existe en fait un moyen plus court de le faire, en utilisant la
Uri.GetLeftPart()
méthode mal nommée .Il y a une prise à
GetLeftPart()
. Si le port est le port par défaut du schéma, il le supprimera. Puisque le port 80 est le port par défaut pour http, la sortie deGetLeftPart()
dans mon exemple ci-dessus serahttp://www.mywebsite.com
.Si le numéro de port avait été autre que 80, il serait inclus dans le résultat.
la source
Uri
classe de cette façon. Il existe une multitude de cas où ce constructeur lèvera une exception. Dans la plupart des cas, je préfère que mon code soit un peu plus indulgent avant d'interrompre la tâche en cours.Eh bien, si vous faites cela dans Asp.Net ou avez accès à HttpContext.Current.Request, je dirais que ce sont des moyens plus simples et plus généraux de les obtenir:
J'espère que ça aide. :)
la source
Une manière plus structurée d'obtenir ceci est d'utiliser UriBuilder. Cela évite la manipulation directe des chaînes.
la source
Request.Url vous renverra l' URI de la demande. Une fois que vous avez cela, vous pouvez récupérer à peu près tout ce que vous voulez. Pour obtenir le protocole, appelez le Scheme propriété .
Échantillon:
J'espère que cela t'aides.
la source
Encore plus court, peut nécessiter ASP.Net plus récent:
L'énumération UriComponents vous permet de spécifier le ou les composants de l'URI que vous souhaitez inclure.
la source
Très similaire à la réponse de Holger. Si vous avez besoin de saisir l'URL, vous pouvez faire quelque chose comme:
La classe Uri fournit toute une gamme de méthodes, beaucoup que je n'ai pas répertoriées.
Dans mon cas, je devais saisir
LocalHost
lePort Number
, alors voici ce que j'ai fait:Qui a réussi à saisir:
http://localhost:12345
la source