前言
有个很简单的需求, 想从 URL 里获取到 domain 不要 subdomain.
abc.example.com -> example.com
没想到就这么简单的需求, 超级难做. 而且 .NET 也没有 build-in 的.
参考:
Get just the domain name from a URL?
Top level domain from URL in C#
Nager.PublicSuffix
最后决定使用 plugin 来解决. 它是基于 https://publicsuffix.org 的. 一个所有 avaiable domain 的 list.
用这个就可以非常安全, 稳当的从 URL 获取到 domain 了.
var domainParser = new DomainParser(new WebTldRuleProvider()); var domainInfo = domainParser.Parse("sub.test.co.uk"); //domainInfo.Domain = "test"; //domainInfo.Hostname = "sub.test.co.uk"; //domainInfo.RegistrableDomain = "test.co.uk"; //domainInfo.SubDomain = "sub"; //domainInfo.TLD = "co.uk";
Access to the path 'C:\Windows\TEMP\publicsuffixcache.dat' is denied
它需要有权限读写这个 file 哦. 赋予 IIS_IUSRS read 权限就可以了.