1 /// <summary> 2 /// 获取当前域名的根域 3 /// </summary> 4 /// <param name="url">域名地址</param> 5 /// <returns></returns> 6 public static string RootDomain(string url) 7 { 8 if (!url.StartsWith("http://") && !url.StartsWith("https://")) 9 { 10 url = "http://" + url; 11 } 12 13 var uri = new Uri(url); 14 string rootDomain; 15 switch (uri.HostNameType) 16 { 17 case UriHostNameType.Dns: 18 { 19 if (uri.IsLoopback) 20 { 21 rootDomain = uri.Host; 22 } 23 else 24 { 25 string host = uri.Host; 26 var hosts = host.Split('.'); 27 rootDomain = hosts.Length == 2 ? host : string.Format("{0}.{1}", hosts[1], hosts[2]); 28 } 29 } 30 break; 31 default: 32 rootDomain = uri.Host; 33 break; 34 } 35 return rootDomain; 36 }
在网上搜索此类问题时,一般都是使用正则,且只是固定判断几个域名后缀的,例如.cn,.com,.net等,所以自己根据工作中的需求写了这个方法。
供有需要的人参考使用。