编程语言
首页 > 编程语言> > c#-wcf客户端ip作为ipv6

c#-wcf客户端ip作为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端点之后.地址返回了ipv6.

仍然有可能在iis7 / server2008上获得ipv4吗?

谢谢 !

解决方法:

WCF的变化与其说是网络的变化,不如说是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.

标签:wcf-client,iis-7,wcf,c
来源: https://codeday.me/bug/20191209/2097825.html