如您所知,Windows Server 2008 R2 上只有一个传出 IP,但我有 10 个网站在 IIS 虚拟目录上运行,服务器上也有 10 个不同的 IP,现在我想做每个网站同时有不同的传出 IP . 可能吗?你知道通过 HTTP 以编程方式获取/发布。
我也读过下面的文章,但它是为了设置一个默认的传出 IP。 http://support.microsoft.com/kb/2386184
通过编程怎么样?是否有任何解决方案可以通过特定 IP 发送请求?
非常感谢。
如您所知,Windows Server 2008 R2 上只有一个传出 IP,但我有 10 个网站在 IIS 虚拟目录上运行,服务器上也有 10 个不同的 IP,现在我想做每个网站同时有不同的传出 IP . 可能吗?你知道通过 HTTP 以编程方式获取/发布。
我也读过下面的文章,但它是为了设置一个默认的传出 IP。 http://support.microsoft.com/kb/2386184
通过编程怎么样?是否有任何解决方案可以通过特定 IP 发送请求?
非常感谢。
您可以为同一站点配置一个 IP 地址或多个 IP 地址。同样,您可以为一个 IP 地址配置一个网站或为一个 IP 地址配置多个网站。唯一的限制是当您使用 HTTPS 时。
这篇 Microsoft 文章讨论了如何为(每个)网站配置 IP 地址。尽管它说它适用于 Server 2003,但配置在最近 2 个修订版中并没有太大变化。http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/e4b7db43-2e10-4939-b888-a7b439af7fef.mspx?mfr=true
在您提到的文章中,它谈到了使用 NETSH 命令(shell)来设置一个传出路径(使用 skipassource 标志)。要将所有 IP 地址用于出站流量,只需执行相反的操作:
Netsh int ipv4 add address <Interface Name> <ip address> skipassource=false
答案是:
httpWebRequest.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
public IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
if (retryCount < 3)
return new IPEndPoint(IPAddress.Parse(servicePointIP), 0);
else
return new IPEndPoint(IPAddress.Any, 0);
}
private string servicePointIP;
public string ServicePointIP
{
get { return servicePointIP; }
set { servicePointIP = value; }
}