日期:2014-05-18  浏览次数:20448 次

为啥获得的IP是 ::1 ????
win7x64 + vs2010 + ie9


C# code
Response.Write(Request.ServerVariables["Remote_Addr"]);

得到的结果是“::1”;这是咋回事啊

------解决方案--------------------
你应该是在自己电脑上测试的,你可以换用别的电脑来当客户端获取的东西就不是这个了,另外你这个东西其实是可以配置的,IPV6格式
------解决方案--------------------
这个是IPV6格式的。

有个方法可以转

代码如下
C# code

public string GetClientIPv4()
        {
            string ipv4 = String.Empty;
            foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))
            {
                if (ip.AddressFamily.ToString() == "InterNetwork")
                {
                    ipv4 = ip.ToString();
                    break;
                }
            }

            if (ipv4 != String.Empty)
            {
                return ipv4;
            }
            
            foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
            {
                if (ip.AddressFamily.ToString() == "InterNetwork")
                {
                    ipv4 = ip.ToString();
                    break;
                }
            }
            return ipv4;
        }


        /// <summary>
        /// 取得客户端地址
        /// </summary>
        public string GetClientIP()
        {
            if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])
            {
                return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
            else
            {
                return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            }

        }