我需要在我的 wcf 程序中确定调用计算机的主机名。以下代码仅在我提供 ipv4 地址时才有效:
System.Net.IPAddress[] addresses = System.Net.Dns.GetHostAddresses("fe80::5423:9721:ff08:a07e");
System.Net.IPHostEntry entry = System.Net.Dns.GetHostEntry(addresses[0]); //"192.168.0.107"); //fe80::5423:9721:ff08:a07e");
string hostName = entry.HostName;
调用计算机是 Win8 RTM 机器,仅提供 ipv6 地址,因此我的 wcf 程序中的以下代码因未知主机错误而失败:
OperationContext context = OperationContext.Current;
MessageProperties prop = context.IncomingMessageProperties;
RemoteEndpointMessageProperty endpoint =
prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
ipAddress = endpoint.Address;
System.Net.IPHostEntry entry = System.Net.Dns.GetHostByAddress(ipAddress);
hostName = entry.HostName;
aliases = entry.Aliases.ToList<string>();
上面的代码包括一些尝试的解决方法:-)
我到处搜索都没有运气 - 有什么想法吗?