4

我在使用时遇到问题HttpContext.Current.Request.UserHostAddress,有时返回“192.168.0.17”(IPv4),有时返回“fe80::99be:a05d:7938:1c30%8”(IPv6),从同一台计算机和导航器​​调用。

我该怎么做才能始终返回 IPv4?

4

2 回答 2

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;
  }
于 2009-11-12T20:06:09.433 回答
2

找到了有人破解的解决方案。不能说它是否会起作用,尽管=)

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

于 2009-11-12T20:04:24.760 回答