Asp.net 获取用户 IP 地址

Asp.net Get User IP address

var result = GetUser_IP();

  protected string GetUser_IP()
        {
            string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            if (!string.IsNullOrEmpty(ipList))
            {
                return ipList.Split(',')[0];
            }

            return Request.ServerVariables["REMOTE_ADDR"];
        }

结果总是显示 ::1 为什么我看不到 IP 地址而不是 ::1

IP 地址结果的 ::1 是什么?

我在代码中遗漏了什么,我怎样才能像 http://whatismyipaddress.com/ 中那样获得我的 IP 地址?

如有任何帮助,我们将不胜感激。

谢谢。

::1 是 localhost 的 IP 地址。当您使用 visual studio 运行 您的应用程序时,它会为您提供一个本地主机的 IP 地址。

::1是IPv6中的环回地址。将其视为 127.0.0.1.

的 IPv6 版本

使用下面的方法

public static string GetVisitorIPAddress(HttpContext _context)
{
    bool GetLan = true;
    string visitorIPAddress = _context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (String.IsNullOrEmpty(visitorIPAddress))
        visitorIPAddress = _context.Request.ServerVariables["REMOTE_ADDR"];

    if (string.IsNullOrEmpty(visitorIPAddress))
        visitorIPAddress = _context.Request.UserHostAddress;

    if (string.IsNullOrEmpty(visitorIPAddress) || visitorIPAddress.Trim() == "::1")
    {
        GetLan = true;
        visitorIPAddress = string.Empty;
    }

    if (GetLan)
    {
        if (string.IsNullOrEmpty(visitorIPAddress))
        {
            //This is for Local(LAN) Connected ID Address
            string stringHostName = Dns.GetHostName();
            //Get Ip Host Entry
            IPHostEntry ipHostEntries = Dns.GetHostEntry(stringHostName);
            //Get Ip Address From The Ip Host Entry Address List
            System.Net.IPAddress[] arrIpAddress = ipHostEntries.AddressList;

            try
            {
                visitorIPAddress = arrIpAddress[arrIpAddress.Length - 0].ToString();
            }
            catch
            {
                try
                {
                    visitorIPAddress = arrIpAddress[0].ToString();
                }
                catch
                {
                    try
                    {
                        arrIpAddress = Dns.GetHostAddresses(stringHostName);
                        visitorIPAddress = arrIpAddress[0].ToString();
                    }
                    catch
                    {
                        visitorIPAddress = "127.0.0.1";
                    }
                }
            }
        }
    }


    return visitorIPAddress;
}