2009-11-12 9 views
4

У меня проблема, когда я использую HttpContext.Current.Request.UserHostAddress, несколько раз возвращает «192.168.0.17» (IPv4) и несколько раз возвращает «fe80 :: 99be: a05d: 7938: 1c30% 8» (IPv6), вызывающий из тот же компьютер и навигатор.Проблема HttpContext IP

Что я делаю, чтобы всегда возвращать IPv4?

ответ

2

Нашли решение, которое кто-то взломал. Не могу сказать, будет ли это работать, Тхо =)

http://www.eggheadcafe.com/software/aspnet/30078410/request-object.aspx

+0

Благодарим Вас за решение. +1 – Cesar

+0

Убейте меня практически идентичным решением всего за несколько секунд. +1 –

+0

@ md5sum: ну, хорошие новости, значит, никто из нас не заслуживает доверия к реальному коду;) –

3

Проверить этот пост на 4GuysFromRolla и посмотреть, если это помогает вообще. Я думаю, что это информация, которую вы ищете.

http://aspnet.4guysfromrolla.com/articles/071807-1.aspx

~ md5sum ~

public static string GetIP4Address() 
    { 
    string IP4Address = String.Empty; 

    foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress)) 
    { 
     if (IPA.AddressFamily.ToString() == "InterNetwork") 
     { 
     IP4Address = IPA.ToString(); 
     break; 
     } 
    } 

    if (IP4Address != String.Empty) 
    { 
     return IP4Address; 
    } 

    foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) 
    { 
     if (IPA.AddressFamily.ToString() == "InterNetwork") 
     { 
     IP4Address = IPA.ToString(); 
     break; 
     } 
    } 

    return IP4Address; 
    } 
+0

http://stackoverflow.com/a/8597351/2788478 –