C# GetHostAddress()不返回IPv6,只返回IPv4

C# GetHostAddress()不返回IPv6,只返回IPv4,c#,dns,ipv6,C#,Dns,Ipv6,当使用Dns.GetHostAddresses(“fred”)时,它只返回IPv4地址作为响应。如何获得IPv6地址呢?有什么不同的方法可以使用吗 Socket.OSSupportsIPv6返回true,IPv6连接工作正常。操作系统是Windows 2008 R2,.Net版本是3.5。IPv6仍然使用DNS解析地址,因此为了使其正常工作,您需要将IPv6条目添加到此域名的区域文件中。然后它会正确地解决 如果IPv6不可用,我怀疑Ping会退回到IPv4,这与您指定“-6”标志后所希望的不完全

当使用Dns.GetHostAddresses(“fred”)时,它只返回IPv4地址作为响应。如何获得IPv6地址呢?有什么不同的方法可以使用吗


Socket.OSSupportsIPv6返回true,IPv6连接工作正常。操作系统是Windows 2008 R2,.Net版本是3.5。

IPv6仍然使用DNS解析地址,因此为了使其正常工作,您需要将IPv6条目添加到此域名的区域文件中。然后它会正确地解决


如果IPv6不可用,我怀疑Ping会退回到IPv4,这与您指定“-6”标志后所希望的不完全一样。

fred是否有与之关联的IPv6 DNS记录?@Lazarus:不,我没有-我已将条目添加到主机文件中,现在已解析IPv4和IPv6地址!如何知道是否存在与主机名关联的dns记录?为什么“ping-6 fred”工作正常,而GetHostAddresses()工作不正常?@ya23我怀疑ping在无法解析IPv6时会返回IPv4查找。Windows可能在你背后做了一些鬼鬼祟祟的LLMNR。始终使用DNS。@Lazarus,@Jeremy Visser:添加DNS记录解决了这个问题。请把它作为一个答案,这样我就可以接受了。如果你也能解释为什么ping是如此误导的话,那就太好了——它解析主机名很好。这不是我看到的。如果我使用
dns.lookup('google.com',{all:true},…)
在node.js中查询,我会得到一个ipv6和ipv4地址,其中与C#with
dns.GetHostAddresses(“google.com”)
相同的机器上不会返回ipv6地址。如果系统上没有安装ipv6,则GetHostAddresses会过滤ipv6地址。考虑到谷歌不在您的本地网络上,您可能会得到一个映射到IPv6的IPv4。你和谷歌之间有端到端的IPv6吗?我在这里假设node.js和.Net执行系统是相同的,如果不是,它们都是为相同的DNS解析链配置的。。也许我在做傻事