Host-Domain von URL abrufen?

143

Wie bekomme ich eine Host-Domain von einer String-URL?

GetDomain hat 1 Eingabe "URL", 1 Ausgabe "Domain"

Beispiel 1

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

Beispiel2

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

Beispiel3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
001
quelle
Es scheint, dass die Frage für den Host in der URL und nicht für die Domain des Hosts ist, es sei denn, ich verstehe "Host-Domain" völlig falsch (im Gegensatz zu nur "Host"). Die Tatsache, dass die Antwort im Sinne von Uri.Host ist, unterstützt, dass die Frage aktualisiert werden sollte, um die gewünschten Beispiele in der Frage und die akzeptierte Antwort besser widerzuspiegeln und mit ihnen in Einklang zu bringen .
NoOneSpecial

Antworten:

266

Sie können RequestObjekt oder UriObjekt verwenden, um den Host der URL abzurufen.

Verwenden von Request.Url

string host = Request.Url.Host;

Mit Uri

Uri myUri = new Uri("http://www.contoso.com:8080/");   
string host = myUri.Host;  // host is "www.contoso.com"
Adil
quelle
2
Hallo, ich wollte Request.Url verwenden, aber Visual Studio gibt immer noch zurück. Das Symbol 'Request' kann nicht aufgelöst werden. Ich weiß nicht was los ist. Ich verwende Visual Studio 2010 und Net Framework 4.0. Kann jemand das Symptom erklären? Vielen Dank
Michal
1
Sie müssen ein Anforderungsobjekt verfügbar haben, das Sie auf Webseiten / Diensten haben, jedoch nicht standardmäßig dahinter. Sie können Uri-Klasse, wenn Sie kein Anforderungsobjekt verfügbar haben
Adil
54

Versuchen Sie es so;

Uri.GetLeftPart( UriPartial.Authority )

Definiert die Teile eines URI für die Uri.GetLeftPart-Methode.


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

Datei: //server/filename.ext -> Datei: // Server

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
quelle
28

Verwenden Sie die Uri- Klasse und die Host- Eigenschaft

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

Versuchen Sie die folgende Aussage

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

Beispiel 1

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

Beispiel2

 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com
SiwachGaurav
quelle
funktioniert nicht, wenn myuri.PathAndQuery "/" ist, ersetzt es einfach "/" durch ""
Patrick vom NDepend-Team
9

Der beste und richtige Weg, dies zu tun, ist die Verwendung von Uri.AuthorityFeld

Laden und verwenden Sie Uri wie folgt:

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

Wenn Sie die URL manipulieren möchten, ist die Verwendung des Uri-Objekts der gute Weg, dies zu tun. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx

Guillaume Beauvois
quelle
1

Versuche dies

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

Es wird support.domain.com ausgegeben

Oder Versuche

Uri.GetLeftPart( UriPartial.Authority )
Soniccool
quelle
0

Sie sollten Ihre Zeichenfolge als URI- Objekt erstellen und die Authority- Eigenschaft das zurückgeben, was Sie benötigen.

Kann Guney Aksakalli
quelle
-2

WWW ist ein Alias, Sie benötigen ihn also nicht, wenn Sie eine Domain möchten. Hier ist meine Litllte-Funktion, um die reale Domain aus einem String zu erhalten

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
quelle