/// <summary>
    /// 获取客户端IP
    /// </summary>
    /// <returns></returns>
    public static string GetClientIpAddress()
        {
            var httpContext = HttpContext.Current;
            if (httpContext.Request.ServerVariables == null)
            {
                return null;
            }
            var clientIp = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ??
                           httpContext.Request.ServerVariables["REMOTE_ADDR"];
            try
            {
                foreach (var hostAddress in Dns.GetHostAddresses(clientIp))
                {
                    if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
                    {
                        return hostAddress.ToString();
                    }
                }
                foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName()))
                {
                    if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
                    {
                        return hostAddress.ToString();
                    }
                }
            }
            catch (Exception ex)
            {
                
            }
            return clientIp;
        }
    /// <summary>
    /// ip是否在ip空间内
    /// </summary>
    /// <param name="ip"></param>
    /// <param name="ipSection"></param>
    /// <returns></returns>
    public static Boolean ipExistsInRange(String ip, String ipSection)
    {
        ipSection = ipSection.Trim();
        ip = ip.Trim();
        int idx = ipSection.IndexOf('-');
        String beginIP = ipSection.Substring(0, idx);
        String endIP = ipSection.Substring(idx + 1);
        return getIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP);
    }
    public static long getIp2long(String ip)
    {
        ip = ip.Trim();
         
        String[] ips = ip.Split('.');
        long ip2long = 0L;
        for (int i = 0; i < 4; ++i)
        {
            ip2long = ip2long << 8 | Int64.Parse(ips[i]);
        }
        return ip2long;
    }
    public static long getIp2long2(String ip)
    {
        ip = ip.Trim();
        String[] ips = ip.Split('.');
        long ip1 = Int64.Parse(ips[0]);
        long ip2 = Int64.Parse(ips[1]);
        long ip3 = Int64.Parse(ips[2]);
        long ip4 = Int64.Parse(ips[3]);
        long ip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4;
        return ip2long;
    }