.NET domain name parsing componentSummaryA domain name has 3 major parts:
The 'top level' domain, or TLD (like .com, .net, .info) The 'domain name', or SLD (like google, microsoft, ebay) The subdomain (like www, photos)
Parsing a domain name into it's 3 major parts sounds easy, but is no trivial task. What happens when you come across hosts like test.co.uk? What about hosts like www.parliament.uk?
From http://publicsuffix.org :
"Since there is no algorithmic method of finding the highest level at which a domain may be registered for a particular top-level domain (the policies differ with each registry), the only method is to create a list. This is the aim of the Public Suffix List."
The domain name parsing component uses the list of rules at www.publicsuffix.org to parse a domain name into 3 component parts. There are 3 types of rules: 'Normal' domain rules, 'Wildcard' rules, and 'Exception' rules.
Getting startedDownload the latest release from the Downloads section Download the latest rules file Configure your app.config in the to point to the rules file you just downloaded (see the sample app.config included in the .zip) Look at the included unit tests to see how easy the component is to use UsageUsing the component is simple. Just use the constructor or the static 'TryParse' method and pass in the complete host name string. The component will return the parsed domain in a DomainName component. It's as simple as that:
// Try parsing a 'wildcard' domain
if (DomainName.TryParse("photos.verybritish.co.uk", out outDomain))
// The domain should be parsed as 'verybritish'
// The TLD is 'co.uk'
// The SLD is just an alias for 'Domain':
// The subdomain is everything else to the left of the domain:
Debug.WriteLine("Apparently, we couldn't parse photos.verybritish.co.uk");
}Where can I get the latest rules list?You can download the latest rules from the Public Suffix site.
These details are provided for information only. No information here is legal advice and should not be used as such.