/// <summary>
/// 获得当前页面客户端的IP
/// </summary>
/// <returns>当前页面客户端的IP</returns>
public static string GetIP()
{
string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(result))
                result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(result))
result = HttpContext.Current.Request.UserHostAddress; if (string.IsNullOrEmpty(result) || !Utils.IsIP(result))
return "127.0.0.1"; return result;
}

解决方案 »

  1.   

    我说了
    用["REMOTE_ADDR"]和["HTTP_X_FORWARDED_FOR"]来取
    取的是服务器的IP
    有没有别的办法
      

  2.   

    不是还有一个?
    HttpContext.Current.Request.UserHostAddress
      

  3.   

    ISA防火墙的问题由于你的服务器安装过ISA的防火墙,之前有人出过这种问题Request.ServerVariables("REMOTE_ADDR")得到服务器IP,非客户端的IP
      

  4.   

    客户端IP准不准要看网络连接的形式,
    如果是在家里用无线路由器上网,IP地址是192.168.x.x,但实际上是用的外网IP.
    在服务端也是,如果服务器放在路由器后面,得到的客户端IP就只是自己的路由器IP地址.
      

  5.   

      //把IP地址记录到数据库
            //Label20.Text = Request.UserHostAddress;
            //string IP = Request.UserHostAddress;
            //string sql = "insert into 用户表(用户账号) values ('" + IP.Trim() + "')";
            //DA.ExeSQL(sql);
            //string sa = "";
            //sa = "delete from 用户表 where 用户账号 = '" + IP.Trim() + "'";
            //DA.ExeSQL(sa); 
      

  6.   

     //把IP地址记录到数据库
            Label20.Text = Request.UserHostAddress;
            string IP = Request.UserHostAddress;
            string sql = "insert into 用户表(用户账号) values ('" + IP.Trim() + "')";
            DA.ExeSQL(sql);
            string sa = "";
            sa = "delete from 用户表 where 用户账号 = '" + IP.Trim() + "'";
            DA.ExeSQL(sa);