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

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"

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/123456@contoso.com -> 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


28

Gunakan kelas Uri dan gunakan properti Host

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

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

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


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 )


-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;

    }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.