如题,请教一下在一个类中如何获取来源IP,注意不是Web页面的后台页面,是在一个类中
下面这些方法都不能用。//方法一
HttpContext.Current.Request.UserHostAddress; //方法二
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];//方法三(无视代理)
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 请问还有其它方法没?谢谢。。 
 

解决方案 »

  1.   

    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;
      }
     public string GetIPAddress()
        {
            try
            {
                //获取IP地址 
                string st = "";
                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ((bool)mo["IPEnabled"] == true)
                    {
                        //st=mo["IpAddress"].ToString(); 
                        System.Array ar;
                        ar = (System.Array)(mo.Properties["IpAddress"].Value);
                        st = ar.GetValue(0).ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }    }
      

  2.   

      3q,问题已解决,原因是asp.net与flex结合时,在网关不能使用内置对象,把内置对象写在另一个类中,在网关调用那个类中的方法,问题解决。。