簡體   English   中英

wcf client ip as ipv6

[英]wcf client ip as ipv6

我正在使用下一段代碼在wcf服務上獲取客戶端ip:

        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上運行,但一切都還可以,endpoint.Address返回了ipv4。 但在我最近更新到iis7 / server2008 endpoint.Address后返回ipv6。

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

謝謝 !

這不是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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM