我的目的是想要统计一个链接被点击的次数
而且要以IP区分,
就是说想要监控到一个IP点击链接点了几次在ASP.NET中要怎么样取访问人的机子的IP???

解决方案 »

  1.   

    我有一个方法.楼主试试.    /// <summary>
        /// 获得客户端IP
        /// </summary>
        /// <returns></returns>
        public static string GetClientIP()
        {
            string ip;
            string[] temp;
            bool isErr = false;
            if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_ForWARDED_For"] == null)
                ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
            else
                ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_ForWARDED_For"].ToString();
            if (ip.Length > 15)
                isErr = true;
            else
            {
                temp = ip.Split('.');
                if (temp.Length == 4)
                {
                    for (int i = 0; i < temp.Length; i++)
                    {
                        if (temp[i].Length > 3) isErr = true;
                    }
                }
                else
                    isErr = true;
            }
            if (isErr)
                return "1.1.1.1";
            else
                return ip;
        }
      

  2.   

    Request.UserHostAddress不过这个属性取得的IP地址不一定是准确的,如果用户使用的是代理的话(或者你们网站使用了CDN),那么使用这个代理的所有用户都是代理或者cdn的IP地址
    在asp的时代有个服务器变量,可以取到用户的IP地址(但是这个要代理支持)
    asp.net里也可以用,你google下就知道了.
      

  3.   

    if(Request.ServerVariables["HTTP_VIA"]!=null)
    {  
    VisitedIP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  
    }
    else
    {  
    if (Request.ServerVariables["HTTP_VIA"]!=null)
    {  
    VisitedIP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  
    }
    else
    {  
    VisitedIP=Request.ServerVariables["REMOTE_ADDR"].ToString();  
    }  
     
    }
      

  4.   

    2楼和5楼的方法我都试了一下
    2楼朋友的方法取出来的IP是127.0.0.1
    5楼朋友的方法,报错,是不识别 Request
      

  5.   

    刚才错了,是在ASP.net中的静态方法是不能用request 
    动态方法中是可以的