每次获取的都是防火墙的IP,拆掉防火墙就可以获取客户端IP,怎么办啊?防火墙是不是哪设置的不对呢?获取IP用了什么协议了?

解决方案 »

  1.   

    http://topic.csdn.net/t/20001209/11/46829.html你可以看看大家的说法
      

  2.   


    asp.net能做的事太少了,取不到它就没办法了.
      

  3.   

    怎么添加例外?防火墙现在只开了HTTP的规则
      

  4.   

     这是我获取IP的代码:
    public static string IPAddress 

         get 
         {
             string result = String.Empty;          result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
             if(result!=null&&result!= String.Empty) 
             { 
                 //可能有代理 
                 if(result.IndexOf(".")==-1)     //没有“.”肯定是非IPv4格式 
                     result = null; 
                 else 
                 { 
                     if(result.IndexOf(",")!=-1) 
                     { 
                         //有“,”,估计多个代理。取第一个不是内网的IP。 
                         result = result.Replace(" ","").Replace("'",""); 
                         string[] temparyip = result.Split(",;".ToCharArray()); 
                         for(int i=0;i<temparyip.Length;i++) 
                         { 
                             if(IsIPAddress(temparyip[i]) 
                                 && temparyip[i].Substring(0,3)!="10." 
                                 && temparyip[i].Substring(0,7)!="192.168" 
                                 && temparyip[i].Substring(0,7)!="172.16.") 
                             { 
                                 return temparyip[i];     //找到不是内网的地址 
                             } 
                         } 
                     } 
                     else if(IsIPAddress(result)) //代理即是IP格式 
                         return result; 
                     else 
                         result = null;     //代理中的内容 非IP,取IP              } 
             }          string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty)?HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
             
             if (null == result || result == String.Empty) 
                 result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
         
             if (result == null || result == String.Empty) 
                 result = HttpContext.Current.Request.UserHostAddress;          return result; 
         } 
    }