HttpContext.Current.Request.ServerVariables["REMOTE_ADDR "]
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
HttpContext.Current.Request.ServerVariables["HTTP_VIA"];
都可以获取IP http://nrshwm.blog.163.com/blog/static/14060694120104435759203/ 这里说了有5中代理情况下他们的区别 问题是我怎么获得正确的客户端IP呢 如果是使用高匿名代理服务器的情况 通过上面三个属性更本就获得不到嘛 还有什么其他方法吗 求高手指教 小弟在感激不尽

解决方案 »

  1.   

    而且根本不存在“正确一说”。反过来:事实上,我浏览你的网站,我完全可以在我发送的请求头上加上 x-forward-for,使得你觉得我不是主动来访问,而是一个代理服务器。我可以让 x-forward-for 为 1.2.3.4,这就是IP欺骗的原理。
      

  2.   

     /// <summary>
           /// 获取客户IP
           /// </summary>
           /// <returns></returns>
           public static string GetClientIP()
           { 
               //Socket tcpclient = tcpListener.AcceptSocket();
               //NetworkStream stream = new NetworkStream(tcpclient, System.IO.FileAccess.ReadWrite, true);
               //IPEndPoint remoteIP = (IPEndPoint)(tcpclient.RemoteEndPoint);           string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
               if (null == result || result == String.Empty)
               {
                   result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
               }
               if (null == result || result == String.Empty)
               {
                   result = HttpContext.Current.Request.UserHostAddress;
               }
               return result;
           }
      

  3.   

    还有就是如果 某个局域网内的机子访问了服务器(服务器不在局域网内) 那么HttpContext.Current.Request.ServerVariables["REMOTE_ADDR "]
    获得是那个局域网的网关IP吗
      

  4.   

    不知道那个免费的IP服务是不是满足你的要求,就是网上人家提供的webservice接口。
      

  5.   

    ASP.NET获取客户端IP及MAC地址
      

  6.   

    private string GetClientIP()
      {
      string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
      if (null == result || result == String.Empty)
      {
      result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
      }  if (null == result || result == String.Empty)
      {
      result = HttpContext.Current.Request.UserHostAddress;
      }
      return result;
      }