Ricevi il dominio host dall'URL?


143

come ottenere il dominio host da un URL stringa?

GetDomain ha 1 input "URL", 1 output "Dominio"

Esempio 1

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

Esempio 2

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

Example3

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

Sembra che la domanda sia per l' host nell'URL e non per il dominio dell'host, a meno che non fraintenda completamente "dominio host" (anziché solo "host"). Il fatto che la risposta sia sulla falsariga di Uri.Host sostiene che la domanda dovrebbe essere aggiornata per riflettere e allineare meglio con gli esempi desiderati nella domanda e la risposta accettata.
NoOne Special

Risposte:


266

È possibile utilizzare l' Requestoggetto o l' Urioggetto per ottenere l'host di url.

Utilizzando 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"

2
Salve, volevo usare Request.Url, ma Visual Studio restituisce ancora Impossibile risolvere il simbolo "Richiesta". Non so cosa sia sbagliato. Uso Visual Studio 2010 e Net Framework 4.0. Qualcuno può spiegare il sintomo? Grazie
Michal il

1
Devi avere l'oggetto Request disponibile che hai nelle pagine web / servizi ma non dietro quello di default. Puoi usare la classe Uri se non hai a disposizione l'oggetto Request
Adil,

54

Prova in questo modo;

Uri.GetLeftPart( UriPartial.Authority )

Definisce le parti di un URI per il metodo 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

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


28

Usa la classe Uri e usa la proprietà Host

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

15

prova la seguente dichiarazione

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

Esempio 1

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

Esempio 2

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

non funziona se myuri.PathAndQuery è "/" sostituisce semplicemente "/" con ""
Patrick del team NDepend l'

9

Il modo migliore e il modo giusto per farlo è usare il Uri.Authoritycampo

Carica e usa Uri in questo modo:

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 vuoi manipolare Url, usare l'oggetto Uri è il modo migliore per farlo. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx


1

Prova questo

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

Produrrà support.domain.com

Oppure prova

Uri.GetLeftPart( UriPartial.Authority )


-2

Il WWW è un alias, quindi non è necessario se si desidera un dominio. Ecco la mia funzione litllte per ottenere il dominio reale da una stringa

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;

    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.