Dapatkan domain host dari URL?

143

bagaimana cara mendapatkan domain host dari URL string?

GetDomain memiliki 1 input "URL", 1 Output "Domain"

Contoh 1

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

Contoh2

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

Contoh3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
001
sumber
Tampaknya pertanyaannya adalah untuk host di URL, dan bukan domain host, kecuali saya benar-benar salah memahami "domain host" (bukan hanya "host"). Fakta bahwa jawabannya ada di sepanjang garis Uri. Jenis dukungan yang paling banyak sehingga pertanyaan harus diperbarui agar lebih mencerminkan dan menyelaraskan dengan contoh-contoh yang diinginkan dalam pertanyaan dan jawaban yang diterima.
NoOneSpecial

Jawaban:

266

Anda dapat menggunakan Requestobjek atau Uriobjek untuk mendapatkan host url.

Menggunakan Request.Url

string host = Request.Url.Host;

Menggunakan Uri

Uri myUri = new Uri("http://www.contoso.com:8080/");   
string host = myUri.Host;  // host is "www.contoso.com"
Adil
sumber
2
Hai, saya ingin menggunakan Request.Url, tetapi Visual Studio masih mengembalikan Tidak dapat menyelesaikan simbol 'Permintaan'. Saya tidak tahu apa yang salah. Saya menggunakan Visual Studio 2010 dan Net Framework 4.0. Adakah yang bisa menjelaskan gejalanya? Terima kasih
Michal
1
Anda harus memiliki objek Permintaan yang tersedia yang Anda miliki di halaman web / layanan tetapi tidak di belakang itu secara default. Anda dapat kelas Uri jika Anda tidak memiliki objek Permintaan yang tersedia
Adil
54

Coba seperti ini;

Uri.GetLeftPart( UriPartial.Authority )

Menentukan bagian-bagian dari URI untuk metode 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: // 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
sumber
28

Gunakan kelas Uri dan gunakan properti Host

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

coba ikuti pernyataan

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

Contoh 1

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

Contoh2

 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com
SiwachGaurav
sumber
tidak berfungsi jika myuri.PathAndQuery adalah "/" itu hanya menggantikan "/" dengan ""
Patrick dari tim NDepend
9

Cara terbaik, dan cara yang tepat untuk melakukannya adalah menggunakan Uri.Authoritybidang

Muat dan gunakan Uri seperti itu:

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

Jika Anda ingin memanipulasi Url, menggunakan objek Uri adalah cara yang baik untuk melakukannya. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx

Guillaume Beauvois
sumber
1

Coba ini

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

Ini akan menampilkan support.domain.com

Atau coba

Uri.GetLeftPart( UriPartial.Authority )
soniccool
sumber
0

Anda harus membangun string Anda sebagai objek URI dan properti Otoritas mengembalikan apa yang Anda butuhkan.

Can Guney Aksakalli
sumber
-2

WWW adalah alias, jadi Anda tidak memerlukannya jika Anda menginginkan domain. Ini adalah fungsi litllte saya untuk mendapatkan domain asli dari sebuah string

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
sumber