2010-07-15 107 views
3

我使用接下來的一段代碼來獲得對WCF服務的客戶端IP:WCF客戶端IP作爲IPv6的

 OperationContext context = OperationContext.Current; 
     System.ServiceModel.Channels.MessageProperties prop = context.IncomingMessageProperties; 
     System.ServiceModel.Channels.RemoteEndpointMessageProperty endpoint = prop[System.ServiceModel.Channels.RemoteEndpointMessageProperty.Name] as System.ServiceModel.Channels.RemoteEndpointMessageProperty; 
     string ip = endpoint.Address; 

而這段代碼在IIS6工作/ SERVER2003一切都OK,endpoint.Address返回的IPv4。 但我最近更新到iis7/server2008 endpoint.Address是返回ipv6。

是否仍然可以在iis7/server2008上獲得ipv4?

謝謝!

回答

3

這不是WCF中的變化,而是網絡中的變化。您的客戶已經使用其IPv6連接到服務器,並且這是存儲在消息上下文中的地址。如果您需要掌握IPv4,請使用以下代碼片段:

IPAddress ipAddress = IPAddress.Parse(ipv6); 
    IPHostEntry ipHostEntry = Dns.GetHostEntry(ipAddress); 
    foreach (IPAddress address in ipHostEntry.AddressList) 
    { 
      if(address.AddressFamily == AddressFamily.InterNetwork) 
        Console.WriteLine(address); 
    } 

這會將您的IPv6轉換爲IPv4。