0

20 個の IP が NIC にバインドされた Windows サーバーがあります。現時点では、時々 IP を (自動的に) 変更することで (Web) リクエストを正常に実行しています ( request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(connectionInfo.BindIPEndPointCallback);)。数日後、.NET の WebBrowser コントロールを使用して Web 要求を行うテスト環境を使用することにしました。Web コントロールが使用している 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 に渡しますが、サブネット マスクは 1 つしか渡さないため、問題が発生する可能性があります。すべての IP アドレスにサブネット マスクを渡すようにしてください。つまり、newIP["SubnetMask"] の割り当てを次のように変更します。

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

また、IpAddresses 引数にスペースが含まれていないことを確認してください。

于 2013-02-19T12:11:46.293 に答える