【发布时间】:2014-06-29 19:17:16
【问题描述】:
此代码在最后一行引发 ArgumentOutOfRangeException
var initAddress = IPAddress.Parse("1.65.128.190");
var ipv6Address = initAddress.MapToIPv6();
Assert.IsTrue(ipv6Address.IsIPv4MappedToIPv6);
var ipv4Address = ipv6Address.MapToIPv4();
谁能解释为什么 MapToIPv6() 和 MapToIPv4() 不兼容往返行程?
编辑:异常源自 IPAddress 构造函数,由 MapToIPv4() 调用。
另外,当第一行是
var initAddress = IPAddress.Parse("1.65.128.90");
不再抛出异常
edit2:@Luaan 复制了这个,我添加了标签 [bug-reporting]。还添加了 [bcl]。让我们看看是否有任何 MS 人员跟踪这些标签 :)
edit3:在 Connect https://connect.microsoft.com/VisualStudio/feedback/details/871964 报告
【问题讨论】:
-
有趣。有很多 IPv4 地址可以正常工作。事实上,根据一些临时测试,似乎最后一点是罪魁祸首——也许代码中的某个地方存在错误,如此随意地使用
long、ulong和int正数和负数强制转换.但是,为什么您仍然想要 IPv6 映射的 IPv4 地址呢?你在使用 linux 服务器吗?我认为 Windows 并没有真正处理这些(因为 IPv4 和 IPv6 是网络堆栈上的单独驱动程序 - 您需要两个单独的套接字来处理 IPv4 和 IPv6)。 -
好吧,我真的不需要它,但在比较地址时我认为这是一个小小的胜利。我想我很幸运,我的代码测试实际上有一个这样的地址,以引导我远离我过早的(未分析的)优化......
-
@PatrickHuizinga 啊,我也一直在发布错误报告。无论如何,我提高了你的:)
标签: .net ipv6 ipv4 base-class-library bug-reporting