public MonitorDataResponse MoniterServerSubmitToCenterrServer([FromBody]MonitorDataRequest monitorData) { if (monitorData == null) { throw new BadRequestException(); } // 查询客户端IP所属的运营商 IPRepository ipRep = new IPRepository(); var ipEntity = ipRep.RetriveIP(monitorData.ClientPublicIP); string realOperator = ipEntity == null ? null : ipEntity.IPBelongTo; string realOperatorProvince = null; string realOperatorCity = null; if (ipEntity != null) { realOperatorProvince = ipEntity.Province; realOperatorCity = ipEntity.City; } bool isSameProvice = false; if(String.IsNullOrWhiteSpace(realOperatorProvince) && String.IsNullOrWhiteSpace(monitorData.ExpectedOperatorProvice)) { isSameProvice = true; } else if(monitorData.ExpectedOperatorProvice.Equals(realOperatorProvince)) { isSameProvice = true; } var status = IPMonitorStatus.Pending; if (!String.IsNullOrEmpty(realOperator)) { realOperator = realOperator.Trim(); } if (String.IsNullOrEmpty(realOperator)) { if (ipEntity != null) { realOperator = ipEntity.IPBelongTo = ipEntity.Country; } status = IPMonitorStatus.Unknown; } else if (isSameProvice && isISPMatched(monitorData.ExpectedOperator,realOperator)) { status = IPMonitorStatus.Normal; } else { status = IPMonitorStatus.Exception; } ClientIP clientIP = new ClientIP { ClientProvince = monitorData.ClientProvince, ClientCity = monitorData.ClientCity, ClientDistinct = monitorData.ClientDistinct, ClientDetailAddr = monitorData.ClientDetailAddress, ClientRecordor = monitorData.ClientRecordor, ClientPublicIP = monitorData.ClientPublicIP, ClientPrivateIP = monitorData.ClientPrivateIP, SubmitFromServerIP = Context.ClientIP, Status = (int)status, ExpectedOperatorProvince = monitorData.ExpectedOperatorProvice, ExpectedOperatorCity = monitorData.ExpectedOperatorCity, ExpectedOperator = monitorData.ExpectedOperator, RealOperator = realOperator, RealOperatorProvince = realOperatorProvince, RealOperatorCity = realOperatorCity, UserName = Context.LoginName }; MonitorDataRepository mdr = new MonitorDataRepository(); clientIP = mdr.Add(clientIP); MonitorDataResponse response = new MonitorDataResponse(); response.UID = clientIP.ID; response.RealOperator = realOperator; response.RealOperatorProvince = realOperatorProvince; response.RealOperatorCity = realOperatorCity; return response; }
public MonitorDataResponse ClientSubmitToMonitorServer([FromBody]MonitorDataRequest monitorData) { if (monitorData == null) { throw new BadRequestException("请求的数据不能为空。"); } MonitorDataResponse response = new MonitorDataResponse(); response.IP = Context.ClientIP; monitorData.ClientPublicIP = Context.ClientIP; string token = Context.Token; //Task.Factory.StartNew(() => //{ try { RestClient restClient = new RestClient(); restClient.BaseUrl = CenterServerBaseUrl; IRestRequest request = new RestRequest("apis/v1/monitordata/transfer", Method.POST); request.RequestFormat = DataFormat.Json; request.AddHeader("Content-Type", "application/json"); request.AddHeader("Authorization", token); request.AddBody(monitorData); var responseFromServer = restClient.Execute<MonitorDataResponse>(request); if (responseFromServer != null && responseFromServer.Data != null) { response.UID = responseFromServer.Data.UID; response.RealOperator = responseFromServer.Data.RealOperator; response.RealOperatorProvince = responseFromServer.Data.RealOperatorProvince; response.RealOperatorCity = responseFromServer.Data.RealOperatorCity; } } catch (Exception ex) { string error = ex.ToString(); } //}); return response; }