c# – 确定域名在“主机”文件中是否有效的最佳方法?
发布时间:2020-12-15 04:01:30 所属栏目:百科 来源:网络整理
导读:Windows Hosts file允许您将IP与一个比正常Internet域名大得多的 host name相关联.我想创建一个函数来确定给定的名称是否是一个有效的“主机”文件域名. 基于this answer和实验的工作,没有,我想出了这个功能: private static bool IsValidDomainName(string
Windows
Hosts file允许您将IP与一个比正常Internet域名大得多的
host name相关联.我想创建一个函数来确定给定的名称是否是一个有效的“主机”文件域名.
基于this answer和实验的工作,没有,我想出了这个功能: private static bool IsValidDomainName(string domain) { if (String.IsNullOrEmpty(domain) || domain.Length > 255) { return false; } Uri uri; if (!Uri.TryCreate("http://" + domain,UriKind.Absolute,out uri)) { return false; } if (!String.Equals(uri.Host,domain,StringComparison.OrdinalIgnoreCase) || !uri.IsWellFormedOriginalString()) { return false; } foreach (string part in uri.Host.Split('.')) { if (part.Length > 63) { return false; } } return true; } 它也有益于它应该使用Unicode名称(其中基本的正则表达式将失败). 有没有更好/更优雅的方式来做到这一点? 更新:根据Bill的建议,Uri.CheckHostName方法几乎完成了我想要的,但它不允许像“-test”这样的主机名在“hosts”文件中允许.我会特别处理“ – ”部分,但我担心有更多的特殊情况. 解决方法
System.Uri.CheckHostName()方法怎么样?
private static bool IsValidDomainName(string name) { return Uri.CheckHostName(name) != UriHostNameType.Unknown; } 为什么自己做这个工作? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |