【问题标题】:C# Uri.CheckHostName(String) Method not working?C# Uri.CheckHostName(String) 方法不起作用?
【发布时间】:2021-01-31 20:41:14
【问题描述】:

谁能解释一下为什么我在 c# 中使用 Uri.CheckHostName(String) 方法时会出现这种行为:

Console.WriteLine(Uri.CheckHostName("10"));

输出:IPv4

Console.WriteLine(Uri.CheckHostName("F"));

输出:DNS

如您所见,它们的 IPv4 或 DNS 值无效...

【问题讨论】:

  • 在大多数系统上,F 是一个可以通过 DNS 查找的名称,而 10 将被解释为 0.0.0.10。从这个意义上说,该方法返回的是“正确的”,对于一些相对无用的“正确”值。

标签: c# uri


【解决方案1】:

我们看一下Uri.CheckHostName调用的code,里面包含了这条评论:

//  Determines whether a string is a valid domain name label. In keeping
//  with RFC 1123, section 2.1, the requirement that the first character
//  of a label be alphabetic is dropped. Therefore, Domain names are
//  formed as:
//
//      <label> -> <alphanum> [<alphanum> | <hyphen> | <underscore>] * 62

强调这一行:

要求 [DNS] 标签的第一个字符是 字母被删除。

该方法还调用此code 来检查有效字符。

简而言之,对我来说,它似乎是按设计工作的。

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 2018-06-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多