绑定到HttpWebRequest中的备用IP在Windows Server 2008中不起作用

时间:2012-10-20 20:48:59

标签: sockets httpwebrequest

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

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

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

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

我试过关闭防火墙,IIS&防病毒 - 问题仍然存在。

1 个答案:

答案 0 :(得分:1)

好吧终于明白了。

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

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

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

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