RT,

解决方案 »

  1.   

    Request.ServerVariables("REMOTE_ADDR")
      

  2.   

    我这样写后,        string tem="";
            tem = Request.ServerVariables("REMOTE_ADDR");
            Response.Write(tem.ToString());1楼的方法出现错误:
    Non-invocable member 'System.Web.HttpRequest.ServerVariables' cannot be used like a method怎么回事?
      

  3.   


      HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
      

  4.   

    谢谢.
    但是这条语句只能取到内网的ip地址,我想要的是能取到公网的ip地址的方法。
      

  5.   

     string result = String.Empty;result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (string.IsNullOrEmpty(result))
    {
     result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    }
      

  6.   

    感谢楼上的各位大狭,
    但是我想要的是能真实读出客户端的公网ip地址呀,大家给我的都只能取内网的ip地址.
      

  7.   

    Request.UserHostAddress你在内网访问肯定取到的是内网的IP,要用外网访问才行。
      

  8.   

        /// <summary>
        /// 获取用户登陆IP
        /// </summary>
        /// <returns>返回用户IP</returns>
        public static string GetIp()
        {
            string user_IP;
            if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
            {
                user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
            }
            else
            {
                user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
            }
            return user_IP;
        }
      

  9.   

    不要忘记对代理的判断....string result = String.Empty; result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (string.IsNullOrEmpty(result))
    {
    result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    } if (string.IsNullOrEmpty(result))
    {
    result = HttpContext.Current.Request.UserHostAddress;
    } if (string.IsNullOrEmpty(result) || !Utils.IsIP(result))
    {
    return "127.0.0.1";
    } return result;
      

  10.   

    Utils.IsIP(result)是一个判断获取到的值是不是可以和IP相匹配的值....可以通过正则自己写...
      

  11.   

    可以这样来写: public static bool IsIP(string ip)
    {
    return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
                                         
    }
      

  12.   

    string GetIp() 
        {
            string userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
            if (userIP == null || userIP == "") 
            { 
                userIP = Request.ServerVariables["REMOTE_ADDR"];         } 
            return userIP; 
    }         string hostname = Dns.GetHostName();
            Response.Write("HostName:"+hostname); 
            IPAddress[] address = Dns.GetHostAddresses(hostname);
            IPEndPoint ipendpoint = new IPEndPoint(address[0], 1234); 
            Response.Write("address:"+ipendpoint.Address.ToString());
            Response.Write("port:" + ipendpoint.Port.ToString());
            Response.Write("endpoint:" + ipendpoint.ToString());
    或通过web services获取地址
    参考
      

  13.   


    是他自己弄错了,他自己在内网上,去访问内网上的另一台机器,当然获得的是内网ip了.
    都在内网上,你的访问信息都没在外网上转,怎么可能让另一台机器获得你的外网ip.