Obter domínio do host do URL?

143

como obter o domínio host a partir de um URL de string?

GetDomain tem 1 "URL" de entrada, 1 "Domínio" de saída

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
001
fonte
Parece que a pergunta é para o host na URL, e não o domínio do host, a menos que eu não entenda completamente "domínio do host" (em vez de apenas "host"). O fato de a resposta corresponder ao tipo de suporte Uri.Host que a pergunta deve ser atualizada para melhor refletir e alinhar-se com os exemplos desejados na pergunta e na resposta aceita.
NoOneSpecial 13/03/19

Respostas:

266

Você pode usar Requestobjeto ou Uriobjeto para obter o host do URL.

Usando Request.Url

string host = Request.Url.Host;

Usando Uri

Uri myUri = new Uri("http://www.contoso.com:8080/");   
string host = myUri.Host;  // host is "www.contoso.com"
Adil
fonte
2
Oi, eu queria usar Request.Url, mas o Visual Studio ainda retorna Não é possível resolver o símbolo 'Request'. Eu não sei o que está errado. Eu uso o Visual Studio 2010 e o Net Framework 4.0. Alguém pode explicar o sintoma? Graças
Michal
1
Você precisa ter o objeto Request disponível, disponível nas páginas / serviços da Web, mas não atrás dele, por padrão. Você pode classe Uri, se você não tem Request objeto disponível
Adil
54

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/[email protected] -> nntp: //news.contoso.com

file: //server/filename.ext -> file: // servidor

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

Use a classe Uri e use a propriedade Host

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

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
SiwachGaurav
fonte
não funciona se myuri.PathAndQuery for "/" apenas substituir "/" por ""
Patrick da equipe NDepend
9

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

Carregue e use o Uri da seguinte forma:

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ê deseja manipular o URL, usar o objeto Uri é a melhor maneira de fazê-lo. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx

Guillaume Beauvois
fonte
1

Tente isto

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

Ele produzirá support.domain.com

Ou tente

Uri.GetLeftPart( UriPartial.Authority )
soniccool
fonte
0

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

Can Guney Aksakalli
fonte
-2

WWW é um alias; portanto, você não precisa se deseja um domínio. Aqui está minha função 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;

    }
Xavius ​​Pupuss
fonte