Asp.net获取用户的IP地址

时间:2015-02-02 09:13:00

标签: asp.net ip

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地址?

我们将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:2)

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

::1是IPv6中的环回地址。可以将其视为127.0.0.1的IPv6版本。

答案 1 :(得分:0)

使用以下方法

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