0

我们有一个 20 ip 绑定到 nic 的 windows 服务器。目前,我们通过(自动)不时更改IP()成功地执行(网络)请求request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(connectionInfo.BindIPEndPointCallback);。几天以来,我们决定使用一个测试环境,我们使用 .NET 的 WebBrowser 控件来发出 Web 请求。问题从这里开始,因为我们无法提供类似端点的解决方案来更改 webcontrol 正在使用的 ip。这就是我们决定以编程方式更改 IP 的原因,但是每当我们通过 WMI 更改 IP 时,我们都会(一直)使用单个 IP 地址来识别。

这是 wmi 代码:

public static void setIP(string IpAddresses, string SubnetMask, string Gateway)
    {
        ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
        ManagementObjectCollection moc = mc.GetInstances();

        foreach (ManagementObject mo in moc)
        {
            if ((bool)mo["IPEnabled"]==true)
            {
                ManagementBaseObject newIP = mo.GetMethodParameters("EnableStatic");
                ManagementBaseObject newGate = mo.GetMethodParameters("SetGateways");
                ManagementBaseObject newDNS = mo.GetMethodParameters("SetDNSServerSearchOrder");

                newGate["DefaultIPGateway"] = new string[] { Gateway };
                newGate["GatewayCostMetric"] = new int[] { 1 };

                newIP["IPAddress"] = IpAddresses.Split(',');
                newIP["SubnetMask"] = new string[] { SubnetMask };

                ManagementBaseObject setIP = mo.InvokeMethod("EnableStatic", newIP, null);
                ManagementBaseObject setGateways = mo.InvokeMethod("SetGateways", newGate, null);
            }
        }
    }

服务器在 VM Ware 上运行,但我认为这不是问题所在。我们做错了什么?

4

1 回答 1

0

不太确定,但您将多个 IP 地址传递给 EnableStatic,但只有一个子网掩码,这可能会导致问题。尝试为每个 IP 地址传递一个子网掩码,即将 newIP["SubnetMask"] 的分配更改为:

 newIP["SubnetMask"] = Enumerable.Repeat(SubnetMask, newIP["IPAddress"].Length).ToArray();

并确保在 IpAddresses 参数中没有任何空格

于 2013-02-19T12:11:46.293 回答