Obtenir le domaine hôte à partir de l'URL?


143

comment obtenir le domaine hôte à partir d'une URL de chaîne?

GetDomain a 1 entrée "URL", 1 sortie "Domaine"

Exemple 1

INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com

Exemple2

INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com

Exemple3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost

Il semble que la question soit pour l' hôte dans l'URL, et non pour le domaine de l'hôte, à moins que je ne comprenne complètement «domaine hôte» (par opposition à simplement «hôte»). Le fait que la réponse va dans le sens de Uri.Host soutient que la question doit être mise à jour pour mieux refléter et s'aligner avec les exemples souhaités dans la question et la réponse acceptée.
NoOneSpecial

Réponses:


266

Vous pouvez utiliser un Requestobjet ou un Uriobjet pour obtenir l'hôte de l'URL.

Utilisation de Request.Url

string host = Request.Url.Host;

Utiliser Uri

Uri myUri = new Uri("http://www.contoso.com:8080/");   
string host = myUri.Host;  // host is "www.contoso.com"

2
Salut, je voulais utiliser Request.Url, mais Visual Studio renvoie toujours Impossible de résoudre le symbole «Request». Je ne sais pas ce qui ne va pas. J'utilise Visual Studio 2010 et Net Framework 4.0. Quelqu'un peut-il expliquer le symptôme? Merci
Michal

1
Vous devez avoir l'objet Request disponible que vous avez dans les pages / services Web mais pas derrière cela par défaut. Vous pouvez classer Uri si vous n'avez pas d'objet Request disponible
Adil

54

Essayez comme ça;

Uri.GetLeftPart( UriPartial.Authority )

Définit les parties d'un URI pour la méthode Uri.GetLeftPart.


http://www.contoso.com/index.htm?date=today -> http://www.contoso.com

http://www.contoso.com/index.htm#main -> http://www.contoso.com

nntp: //news.contoso.com/123456@contoso.com -> nntp: //news.contoso.com

file: //server/filename.ext -> file: // serveur

Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search");
Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));

Demo


28

Utiliser la classe Uri et utiliser la propriété Host

Uri url = new Uri(@"http://support.domain.com/default.aspx?id=12345");
Console.WriteLine(url.Host);

15

essayez la déclaration suivante

 Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
 string pathQuery = myuri.PathAndQuery;
 string hostName = myuri.ToString().Replace(pathQuery , "");

Exemple 1

 Input : http://localhost:4366/Default.aspx?id=notlogin
 Ouput : http://localhost:4366

Exemple2

 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com

ne fonctionne pas si myuri.PathAndQuery est "/" il remplace simplement "/" par ""
Patrick de l'équipe NDepend

9

La meilleure façon et la bonne façon de le faire est d'utiliser Uri.Authorityfield

Chargez et utilisez Uri comme ceci:

Uri NewUri;

if (Uri.TryCreate([string with your Url], UriKind.Absolute, out NewUri))
{
     Console.Writeline(NewUri.Authority);
}

Input : http://support.domain.com/default.aspx?id=12345
Output : support.domain.com

Input : http://www.domain.com/default.aspx?id=12345
output : www.domain.com

Input : http://localhost/default.aspx?id=12345
Output : localhost

Si vous souhaitez manipuler Url, utiliser l'objet Uri est le bon moyen de le faire. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx


1

Essaye ça

Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));

Il affichera support.domain.com

Ou essayez

Uri.GetLeftPart( UriPartial.Authority )


-2

WWW est un alias, vous n'en avez donc pas besoin si vous voulez un domaine. Voici ma fonction litllte pour obtenir le domaine réel à partir d'une chaîne

private string GetDomain(string url)
    {
        string[] split = url.Split('.');
        if (split.Length > 2)
            return split[split.Length - 2] + "." + split[split.Length - 1];
        else
            return url;

    }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.