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

誰かがハッキングした解決策を見つけました。それがうまくいくかどうかは言えません、tho =)

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

于 2009-11-12T20:04:24.760 に答える