2013-02-19 55 views
0

我们有一个windows服务器,其IP地址绑定到NIC。目前我们正在通过(automaticaly)成功地执行(web)请求,并且偶尔更改IP(request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(connectionInfo.BindIPEndPointCallback);)。几天后,我们决定使用一个测试环境,在这里我们使用.NET的WebBrowser控件来发出Web请求。 这里的问题开始了,因为我们不能给端点解决方案来改变web控件使用的ip。这就是为什么我们决定改变IP programmaticaly的原因,但是当我们通过WMI改变IP时,我们正在使用单个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); 
      } 
     } 
    } 

服务器上的虚拟机运行洁具但我不认为这可能是问题。 我们做错了什么?

回答

0

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

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

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

+0

我改变代码,但仍然没有运气。 – user2086835 2013-02-19 12:36:00

+0

我想我的问题并不清楚。我已经将所有IP绑定到NIC,我只想确定自己使用哪个IP用于此应用程序。 – user2086835 2013-02-19 13:33:51

相关问题