c# - name - Obtener dominio de host desde la URL?
request absolute url c# (8)
Debe construir su cadena como objeto URI y la propiedad Authority devolverá lo que necesita.
cómo obtener el dominio de host de una cadena de URL?
GetDomain tiene 1 entrada "URL", 1 salida "Dominio"
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
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 -> archivo: // 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));
La mejor manera, y la forma correcta de hacerlo es usando el campo Uri.Authority
Carga y usa Uri como sigue:
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 mejor manera de hacerlo. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx
Prueba esto
Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));
Saldrá de support.domain.com
O tratar
Uri.GetLeftPart( UriPartial.Authority )
Puede usar el objeto Request
u objeto Uri
para obtener el 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"
WWW es un alias, por lo que no lo necesita si quiere 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;
}
prueba 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