gpt4 book ai didi

c# - wcf 客户端 ip 作为 ipv6

转载 作者:行者123 更新时间:2023-11-30 16:33:23 25 4
gpt4 key购买 nike

我正在使用下一段代码获取 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。

关于c# - wcf 客户端 ip 作为 ipv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com