Obter o domínio do host do URL?

como obter o domínio do host de um URL de seqüência de caracteres?

GetDomain tem 1 input “URL”, 1 saída “Domínio”

Exemplo 1

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

Exemplo2

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

Exemplo3

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

Você pode usar o object Request ou o object Uri para obter o host do URL.

Usando Request.Url

 string host = Request.Url.Host; 

Usando o Uri

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

Tente assim;

 Uri.GetLeftPart( UriPartial.Authority ) 

Define as partes de um URI para o método 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

arquivo: //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

Use a class Uri e use a propriedade Host

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

tente seguir a declaração

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

Exemplo 1

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

Exemplo2

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

A melhor maneira e a maneira correta de fazer isso é usando o campo Uri.Authority

Carregue e use o Uri assim:

 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 

Se você quiser manipular o Url, usar o object Uri é a melhor maneira de fazer isso. https://msdn.microsoft.com/pt-br/library/system.uri(v=vs.110).aspx

Tente isso

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

Ele irá gerar support.domain.com

Ou tente

 Uri.GetLeftPart( UriPartial.Authority ) 

Você deve construir sua string como object URI e a propriedade Authority retorna o que você precisa.

WWW é um alias, então você não precisa dele se quiser um domínio. Aqui está minha function de litllte para obter o domínio real de uma 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; }