private void InitAccessLogIpForMySql() { InitAccessLogIpLocalForMySql(); MySqlCMSDbContext dbContext = new MySqlCMSDbContext(); ((System.Data.Entity.Infrastructure.IObjectContextAdapter)dbContext).ObjectContext.CommandTimeout = 0; List <AccessLogEntity> models = dbContext.AccessLogEntitys.Where(m => m.IsProcessIp != true && m.IPAddress != "::1").ToList(); List <string> IpLst = models.Select(m => m.IPAddress).Distinct().ToList(); if (IpLst != null && IpLst.Count > 0) { int num = 1; int sTime = 0; foreach (string IpAddress in IpLst) { sTime++; if (sTime >= 100) { sTime = 0; System.Threading.Thread.Sleep(5000); } if (!string.IsNullOrEmpty(IpAddress)) { try { ResultIpData data = GetIpAddress(IpAddress); if (data != null && !string.IsNullOrEmpty(data.ip)) { if (models != null && models.Count > 0) { models.ForEach(delegate(AccessLogEntity accessModel) { if (accessModel.IPAddress == IpAddress) { accessModel.Country = data.country; accessModel.CountryNo = data.country_id; accessModel.BigArea = data.area; accessModel.Isp = data.isp; accessModel.Province = data.region; accessModel.City = data.city; accessModel.Area = data.county; accessModel.IsProcessIp = true; dbContext.AccessLogEntitys.Add(accessModel); dbContext.Entry <AccessLogEntity>(accessModel).State = EntityState.Modified; dbContext.SaveChanges(); } }); } } else { iLog.WriteLog("InitAccessLogIpForMySql:未获取到结果", 1); } } catch (Exception ex) { iLog.WriteLog("InitAccessLogIpForMySql:处理异常:" + ex.Message, 1); } } iLog.WriteLog("InitAccessLogIpForMySql:当前处理条数:" + num + " 总条数:" + models.Count, 0); num++; } } }
private ResultIpData GetIpAddress(string Ips) { ResultIpData resdata = new ResultIpData(); String querys = "ip=" + Ips + ""; String bodys = ""; String url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { httpResponse = (HttpWebResponse)ex.Response; } if (httpResponse.StatusCode == HttpStatusCode.OK) { Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); string strs = reader.ReadToEnd(); ResultIp resIp = JsonConvert.DeserializeObject <ResultIp>(strs); if (resIp.code == 0 && resIp.data != null) { resdata = JsonConvert.DeserializeObject <ResultIpData>(resIp.data.ToString()); } else { iLog.WriteLog("GetIpAddress:处理异常:" + resIp.data.ToString(), 1); } } else if (httpResponse.StatusCode == HttpStatusCode.Forbidden) { System.Threading.Thread.Sleep(5000); } return(resdata); }