2013-08-20 47 views
3

http://msdn.microsoft.com/en-us/library/system.urihostnametype.aspxhttp://msdn.microsoft.com/en-us/library/system.uri.checkhostname.aspx的文檔有點不清楚。什麼時候Uri.CheckHostName()返回UriHostNameType.Basic而不是UriHostNameType.Dns或UriHostNameType.Unknown?

Uri.CheckHostName(string)返回UriHostNameType.Dns代表有效的DNS主機名,當字符串包含無效字符等時返回UriHostNameType.Unknown。這種方法在什麼情況下會返回UriHostNameType.Basic

回答

4

現在.NET Core是開源的,我們可以肯定知道。

就像單聲道,它永遠不會返回UriHostNameType.Basic

Link to source code

4

我想到我可以檢查單聲道源代碼來回答我的問題。下面是從https://github.com/mono/mono/blob/master/mcs/class/System/System/Uri.csCheckHostName方法:

public static UriHostNameType CheckHostName (string name) 
    { 
     if (name == null || name.Length == 0) 
      return UriHostNameType.Unknown; 

     if (IsIPv4Address (name)) 
      return UriHostNameType.IPv4; 

     if (IsDomainAddress (name)) 
      return UriHostNameType.Dns;    

     IPv6Address addr; 
     if (IPv6Address.TryParse (name, out addr)) 
      return UriHostNameType.IPv6; 

     return UriHostNameType.Unknown; 
    } 

看來,UriHostNameType.Basic完全不使用。也許微軟的實現可以返回這個值?

相關問題