Ana makine alan adı URL'den alınıyor mu?


143

dize URL'sinden ana makine alan adı nasıl alınır?

GetDomain'de 1 giriş "URL", 1 Çıkış "Etki Alanı" vardır

Örnek 1

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

Örnek2

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

Örnek 3

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

Bu soru için görünüyor konak URL'de değil, etki alanı konağın, sürece ben tamamen yanlış anlamak "ana makine alan" (sadece "ev sahibi" aksine). Cevabın Uri çizgileri boyunca olması.Sorudaki istenen örnekleri ve kabul edilen cevabı daha iyi yansıtmak ve hizalamak için sorunun güncellenmesi gereken en büyük destek türü.
NoOneSpecial

Yanıtlar:


267

URL'yi barındırmak için Requestnesne veya Urinesne kullanabilirsiniz .

Request.Url kullanma

string host = Request.Url.Host;

Uri kullanma

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

2
Merhaba, Request.Url kullanmak istedim, ancak Visual Studio yine de dönüyor 'İstek' sembolü çözülemiyor. Neyin yanlış olduğunu bilmiyorum. Visual Studio 2010 ve Net Framework 4.0 kullanıyorum. Birisi semptomu açıklayabilir mi? Teşekkürler
Michal

1
Web sayfalarında / hizmetlerinde bulunan ancak varsayılan olarak bunun arkasında olmayan Request nesnesinin kullanılabilir olması gerekir. İstek nesnesi yoksa Uri sınıfı yapabilirsiniz
Adil

54

Bu şekilde deneyin;

Uri.GetLeftPart( UriPartial.Authority )

Uri.GetLeftPart yöntemi için bir URI'nin parçalarını tanımlar.


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

dosya: //server/filename.ext -> dosya: // sunucu

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

Uri sınıfını kullanın ve Host özelliğini kullanın

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

15

ifadeyi takip etmeyi dene

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

Örnek 1

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

Örnek2

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

myuri.PathAndQuery "/" ise "/" yerine ""
yazıyorsa çalışmaz

9

En iyi yol ve bunu yapmanın doğru yolu Uri.Authorityalanı kullanmaktır

Uri'yi aşağıdaki gibi yükleyin ve kullanın:

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

Url'yi değiştirmek istiyorsanız, Uri nesnesini kullanmak bunu yapmanın iyi bir yoludur. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx


1

Bunu dene

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

Support.domain.com adresini çıktılar

Veya Dene

Uri.GetLeftPart( UriPartial.Authority )


-2

WWW bir takma addır, bu nedenle bir alan adı istiyorsanız buna ihtiyacınız yoktur. İşte bir dize gerçek etki alanı almak için litllte işlevi

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;

    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.