Response.Write("1<br/>" + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "<br/>");
            Response.Write("2<br/>" + HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] + "<br/>");
            Response.Write("3<br/>" + HttpContext.Current.Request.UserHostAddress + "<br/>");
            Response.Write("4<br/>" + System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName()).GetValue(0).ToString() + "<br/>");这几种方法都不行,获取的都是局域网内的IP,我想得到的是像你打开http://www.ip138.com
的这种IP,我就想判断IP是不是电信的,咋就这么难asp.net获取IP

解决方案 »

  1.   

    放在互联网上测试就可以看到互联网IP了,在局域网或本机测试是看不到互联网IP的,因为这种情况不需要经历任何互联网的节点。
      

  2.   

    /// 获得客户端IP
        /// 
        /// <returns></returns>
        private string getIp()
        {
            // 穿过代理服务器取远程用户真实IP地址
            string Ip = string.Empty;
            if (Request.ServerVariables["HTTP_VIA"] != null)
            {
                if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] == null)
                {
                    if (Request.ServerVariables["HTTP_CLIENT_IP"] != null)
                        Ip = Request.ServerVariables["HTTP_CLIENT_IP"].ToString();
                    else
                        if (Request.ServerVariables["REMOTE_ADDR"] != null)
                            Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
                        else
                            Ip = "202.96.134.133";
                }
                else
                    Ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            } 
            else if (Request.ServerVariables["REMOTE_ADDR"] != null)
            {
                Ip = Request.ServerVariables["REMOTE_ADDR"].ToString();
            }
            else
            {
                Ip = "202.96.134.133";
            }
            return Ip;
        }
    测试看看,另外,有一种工具叫VPN,改IP也不是什么新鲜事。