我一直在这里搜索,但似乎无法找到这个问题的答案。我有一点时间弄清楚是否有一种方法可以给我HttpContext.Current.Request.Url
的主域名?
示例:
http://www.example.com> example.com
http://test.example.com> example.com
http://example.com> example.com
提前致谢。
答案 0 :(得分:7)
public static void Main() {
var uri = new Uri("http://test.example.com");
var fullDomain = uri.GetComponents(UriComponents.Host, UriFormat.SafeUnescaped);
var domainParts = fullDomain
.Split('.') // ["test", "example", "com"]
.Reverse() // ["com", "example", "test"]
.Take(2) // ["com", "example"]
.Reverse(); // ["example", "com"]
var domain = String.Join(".", domainParts);
}
答案 1 :(得分:1)
请参阅here以获取允许任意注册的后缀列表。
找到该列表中完整域名的最长后缀,然后返回该后缀之前的最后.
之后的所有内容。
答案 2 :(得分:0)
获取顶级域名列表,并将每个域名与该列表匹配,匹配后只需1个字词。
(您可能需要为.co添加一些支持。 等...
答案 3 :(得分:0)
这是我想出来的想法 @SLaks,我很想知道你对此的看法。
''# First we fix the StackOverflow code coloring issue.
<Extension()>
Public Function PrimaryDomain(ByVal url As Uri) As String
If url.Host.Contains("example.com") Then Return "example.com"
If url.Host.Contains("example.ca") Then Return "example.ca"
If url.Host.Contains("example.local") Then Return "example.local"
If url.Host.Contains("localhost") Then Return "localhost"
Throw New Exception("The url host was not recognized as a known host name for this domain.")
End Function