sockets - 在 HttpWebRequest 中绑定(bind)到备用 IP 在 Windows Server 2008 中不起作用

标签 sockets httpwebrequest

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

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

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

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

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

最佳答案

好吧,终于明白了。

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

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

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

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

关于sockets - 在 HttpWebRequest 中绑定(bind)到备用 IP 在 Windows Server 2008 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992536/

相关文章:

sockets - 使用 sendto 发送时如何强制 UDP 中的客户端打开端口

java - 有什么办法可以让UDP丢包更低一些吗?

python - 如何用 Python 制作一个能记住客户端的简单多线程套接字服务器

python - 在 python 中搜索 wsgi 测试插件

javascript - 每个用户 ID 的套接字空间?

c++ - C套接字API是线程安全的吗?

javascript - 在关闭的 python 服务器上的 ajax 请求中获取 0 作为 Http 响应代码

c# - CookieContainer 处理路径(谁吃了我的 cookie?)

c# - 如何在 HttpWebRequest POST 中将对象作为参数传递?

coldfusion - 查看 cfhttp 请求