c# - 从URL获取主机域?
如何从字符串URL获取主机域?
GetDomain有1个输入“URL”,1个输出“Domain”
例1
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
示例3
INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
8个解决方案
220 votes
您可以使用Request对象或Uri对象来获取主机的URL。
使用Request.Url
string host = Request.Url.Host;
使用Uri
Uri myUri = new Uri("http://www.contoso.com:8080/");
string host = myUri.Host; // host is "www.contoso.com"
Adil answered 2019-07-14T13:29:25Z
40 votes
试试这样;
Uri.GetLeftPart( UriPartial.Authority )
定义Uri.GetLeftPart方法的URI部分。
[[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] - >文件://服务器
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 answered 2019-07-14T13:30:37Z
26 votes
使用Uri类并使用Host属性
Uri url = new Uri(@"http://support.domain.com/default.aspx?id=12345");
Console.WriteLine(url.Host);
Habib answered 2019-07-14T13:31:02Z
10 votes
尝试以下声明
Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
string pathQuery = myuri.PathAndQuery;
string hostName = myuri.ToString().Replace(pathQuery , "");
例1
Input : http://localhost:4366/Default.aspx?id=notlogin
Ouput : http://localhost:4366
例题
Input : http://support.domain.com/default.aspx?id=12345
Output: support.domain.com
SiwachGaurav answered 2019-07-14T13:31:33Z
4 votes
最好的方法,正确的方法是使用Uri.Authority字段
像这样加载和使用Uri:
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
如果你想操纵Url,使用Uri对象是一个很好的方法。[https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx]
Guillaume Beauvois answered 2019-07-14T13:32:19Z
1 votes
试试这个
Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));
它将输出support.domain.com
或者试试
Uri.GetLeftPart( UriPartial.Authority )
soniccool answered 2019-07-14T13:32:55Z
0 votes
您应该将您的字符串构造为URI对象,并且Authority属性返回您需要的内容。
Can Guney Aksakalli answered 2019-07-14T13:33:23Z
-2 votes
WWW是别名,因此如果您想要域,则不需要它。这是我从字符串中获取真实域的litllte函数
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 answered 2019-07-14T13:33:49Z