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
001
la source
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"
Adil
la source
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/[email protected] -> 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

Soner Gönül
la source
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);
Habib
la source
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
SiwachGaurav
la source
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

Guillaume Beauvois
la source
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 )
soniccool
la source
0

Vous devez construire votre chaîne en tant qu'objet URI et la propriété Authority renvoie ce dont vous avez besoin.

Can Guney Aksakalli
la source
-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;

    }
Xavius ​​Pupuss
la source