C# 从URL获取主机域?

C# 从URL获取主机域?,c#,string,url,httpwebrequest,uri,C#,String,Url,Httpwebrequest,Uri,如何从字符串URL获取主机域 GetDomain有1个输入“URL”,1个输出“域” 例1 INPUT: http://support.domain.com/default.aspx?id=12345 OUTPUT: support.domain.com Input : http://localhost:4366/Default.aspx?id=notlogin Ouput : http://localhost:4366 例2 INPUT: http://www.domain.com/d

如何从字符串URL获取主机域

GetDomain有1个输入“URL”,1个输出“域”

例1

INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com
 Input : http://localhost:4366/Default.aspx?id=notlogin
 Ouput : http://localhost:4366
例2

INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com
 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com
例3

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

您可以使用
Request
对象或
Uri
对象来获取url的主机

使用

使用

试试这个

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

或尝试

Uri.GetLeftPart( UriPartial.Authority )
使用类和使用属性

像这样尝试

Uri.GetLeftPart( UriPartial.Authority )
定义URI.GetLeftPart方法的URI部分


-->

-->

nntp://news.contoso.com/123456@contoso.com-->nntp://news.contoso.com

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


您应该将字符串构造为对象,属性返回您需要的内容

试试下面的语句

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

INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com
 Input : http://localhost:4366/Default.aspx?id=notlogin
 Ouput : http://localhost:4366
例2

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

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;

    }

最好的方法,也是正确的方法是使用
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://stackoverflow.com/questions/";


输出=”https://stackoverflow.com/";

您好,我想使用Request.Url,但Visual Studio仍然返回无法解析符号“Request”。我不知道怎么了。我使用VisualStudio2010和NetFramework4.0。有人能解释这个症状吗?谢谢,您需要在网页/服务中提供请求对象,但默认情况下不在其后面。如果您没有可用的请求对象,则可以使用Uri类如果myuri.PathAndQuery为“/”则无法工作它只是将“/”替换为“”,问题似乎是URL中的主机,而不是主机的域,除非我完全误解了“主机域”(而不仅仅是“主机”)。事实上,答案与Uri.Host一致,这是一种支持,即应该更新问题,以便更好地反映问题和公认答案中所需的示例,并与之保持一致。
 var url = Regex.Match(url, @"(http:|https:)\/\/(.*?)\/");