3

我正在尝试将 HttpWebRequest 调用绑定到我的服务器上的特定 IP(它有很多 IP)。我已经使用 BindIPEndPointDelegate 成功编写了这段代码,它在我的本地机器上运行良好(Windows 7)

我的问题与 Windows Server 2008 有关。当我在 Windows Server 2008 上运行相同的控制台应用程序时,它在使用委托时无法绑定到 IP。更复杂的是,它似乎适用于某些目标 URL (http://www.microsoft.com) 而不适用于某些 ( http://www.google.com、http://www.facebook。 com )

如果我删除 IP 特定绑定(委托)并运行应用程序,它适用于所有 URL。

我绑定的 IP 是默认的服务器 IP 地址 - 这意味着,在这两种情况下都应该使用相同的 IP。我已经验证了这一点,如果我不使用委托进行绑定,它会使用相同的 IP。如果我明确指定 IP,它会如上所述失败。

我已尝试关闭防火墙、IIS 和防病毒软件 - 问题仍然存在。

4

1 回答 1

1

好吧终于想通了。

再次测试后,我发现指定 IPAddress.Any 也不起作用。另一方面,IPAddress.IPv6Any 工作正常。

最后,我取消选中网络适配器设置中的 IPv6 协议,并且应用程序开始对所有 URL 正常工作并绑定所有本地 IPv4 地址。

不确定这是否是 .NET 代码或功能中的错误 - 但禁用 IPv6 为我修复了它。

最后,如果有人在使用绑定进行调用时遇到“请求的地址在其上下文中无效”,请尝试禁用您的防病毒软件。

于 2012-10-21T16:19:54.937 回答