【问题标题】:HttpContext IP ProblemHttpContext IP问题
【发布时间】:2009-11-12 19:58:30
【问题描述】:

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

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

【问题讨论】:

    标签: c# httpcontext ipv6 ipv4


    【解决方案1】:

    查看 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;
      }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 用几乎相同的解决方案在几秒钟内击败我。 +1
      • @md5sum: 那么好消息是,我们谁都不值得拥有实际代码的信誉;)
      • 是的,死链接 - 这就是为什么 SO 建议发布答案,而不仅仅是答案的链接。 ://
      • 正确。唉,我无法删除已接受的答案。不过,正如 Nathan 的 cmets 所指出的,这与此答案中的解决方案相同
      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多