2009-11-12 69 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 2009-11-13 10:01:25

+0

仅用几秒钟就可以完全击败我。 +1 – 2009-11-13 15:26:03

+0

@ md5sum:那么好消息是,我们没有人值得实际代码的信誉;) – 2009-11-13 15:31:51

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 – 2017-03-20 17:06:15