示例#1
0
文件: IPSeeker.cs 项目: hbulzy/SYS
        /// <summary>
        /// 获取所查询地区的编码
        /// </summary>
        /// <param name="ip">要查找的IP地址</param>
        /// <returns>地区编码</returns>
        public string GetAreaCode(string ip)
        {
            string ipAddress = GetAddress(ip);
            if (string.IsNullOrEmpty(ipAddress))
                return string.Empty;
            string ipCountry = ipAddress.Substring(0, ipAddress.LastIndexOf(' '));
            AreaService areaService = new AreaService();

            if (string.IsNullOrEmpty(ipCountry))
                return string.Empty;

            //在中国的省(直辖市)地区查找
            Area china = areaService.Get("A1560000");
            if (china == null)
                return string.Empty;

            foreach (var area in china.Children)
            {
                if (ipCountry.Contains(area.Name.Substring(0, 2)))
                {
                    foreach (var city in area.Children)
                    {
                        if (ipCountry.Contains(city.Name))
                        {
                            foreach (var district in city.Children)
                            {
                                if (ipCountry.Contains(city.Name))
                                {
                                    return city.AreaCode;
                                }
                            }
                            return city.AreaCode;
                        }
                    }
                    return area.AreaCode;
                }
            }

            //先从国家地区中查找
            IEnumerable<Area> areas = areaService.GetRoots();
            foreach (var area in areas)
            {
                if (ipCountry.Contains(area.Name))
                    return area.AreaCode;
            }
            return string.Empty;
        }