Obtener dominio de host de URL?

143

¿Cómo obtener el dominio de host de una URL de cadena?

GetDomain tiene 1 "URL" de entrada, 1 "Dominio" de salida

Ejemplo 1

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

Ejemplo2

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

Ejemplo3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
001
fuente
Parece que la pregunta es para el host en la URL, y no para el dominio del host, a menos que no entienda completamente el "dominio del host" (en lugar de solo "host"). El hecho de que la respuesta está en la línea de Uri. Es el tipo de apoyo que la pregunta debe actualizarse para reflejar y alinearse mejor con los ejemplos deseados en la pregunta y la respuesta aceptada.
NoOneSpecial

Respuestas:

266

Puede usar Requestobjeto u Uriobjeto para obtener host de 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
fuente
2
Hola, quería usar Request.Url, pero Visual Studio aún devuelve No se puede resolver el símbolo 'Solicitud'. No sé lo que está mal. Yo uso Visual Studio 2010 y Net Framework 4.0. ¿Alguien puede explicar el síntoma? Gracias
Michal
1
Debe tener disponible el objeto Solicitud que tiene en las páginas web / servicios, pero no detrás de eso de manera predeterminada. Puede usar la clase Uri si no tiene un objeto Solicitud disponible
Adil
54

Intenta así;

Uri.GetLeftPart( UriPartial.Authority )

Define las partes de un URI para el 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: // 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
fuente
28

Use la clase Uri y use la propiedad Host

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

intente la siguiente declaración

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

Ejemplo 1

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

Ejemplo2

 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com
SiwachGaurav
fuente
no funciona si myuri.PathAndQuery es "/" simplemente reemplaza "/" con ""
Patrick del equipo NDepend
9

La mejor manera y la forma correcta de hacerlo es usando el Uri.Authoritycampo

Cargue y use Uri así:

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

Si desea manipular Url, usar el objeto Uri es la buena manera de hacerlo. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx

Guillaume Beauvois
fuente
1

Prueba esto

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

Saldrá support.domain.com

O tratar

Uri.GetLeftPart( UriPartial.Authority )
soniccool
fuente
0

Debe construir su cadena como objeto URI y la propiedad Autoridad devuelve lo que necesita.

Can Guney Aksakalli
fuente
-2

WWW es un alias, por lo que no lo necesita si desea un dominio. Aquí está mi pequeña función para obtener el dominio real de una cadena

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
fuente