c# – 确定域名在“主机”文件中是否有效的最佳方法?

c# – 确定域名在“主机”文件中是否有效的最佳方法?,第1张

概述Windows Hosts file允许您将IP与一个比正常Internet域名大得多的 host name相关联.我想创建一个函数来确定给定的名称是否是一个有效的“主机文件域名. 基于this answer和实验的工作,没有,我想出了这个功能: private static bool IsValidDomainName(string domain){ if (String.IsNul 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;}

为什么自己做这个工作?

总结

以上是内存溢出为你收集整理的c# – 确定域名在“主机”文件中是否有效的最佳方法?全部内容,希望文章能够帮你解决c# – 确定域名在“主机”文件中是否有效的最佳方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1261756.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存