[英]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.