protected void Page_Load(object sender, EventArgs e) { var plainText = GetDocumentContents(new HttpRequestWrapper(this.Request)); if (string.IsNullOrWhiteSpace(plainText)) { log.Info($"收到的資料為空\n" + $"Data:{JsonConvert.SerializeObject(plainText)}\n"); Response.Write(JsonConvert.SerializeObject(new { ResultCode = 404, ErrorMessage = $"轉換失敗,傳入的資料為空 Data:{plainText}" })); return; } log.Info($"開始解析資料,Data:{plainText}"); var MIData = JsonConvert.DeserializeObject <MIData>(plainText); log.Info($"檢查是否存在會員資料:{MIData.Member_IDNo}"); var dbIDNo = DBService.MemberInfo.QueryMemberInfoByIDNo(MIData.Member_IDNo); log.Trace($"回傳的會員資料UID", dbIDNo); try { if (string.IsNullOrEmpty(dbIDNo)) { log.Info($"新建會員資料"); //儲存該筆資料 var memberInfo = new MemberInfo(); //取得系統ID var tmpID = ToolLibs.GetDateTimeNowDefaultString(); log.Info($"新建的會員資料ID:{tmpID}"); #region MemberInfo memberInfo.ID = tmpID; memberInfo.IDNo = MIData.Member_IDNo; memberInfo.Name = "Test"; memberInfo.Genger = 0; memberInfo.BDate = DateTime.Now; memberInfo.Tel = ""; memberInfo.Mobile = ""; memberInfo.Email = ""; memberInfo.Fax = ""; memberInfo.Occupation = ""; memberInfo.CreateDate = DateTime.Now; #endregion log.Trace("新增會員資料", memberInfo); DBService.MemberInfo.InsertMemberInfo(memberInfo); } //建立新的測量資料 var measuerInfo = new MeasureInfo(); //傳入身份證字號 measuerInfo.MemberIDNo = MIData.Member_IDNo; //字串處理,將多餘的 \n \r 去除,並將數據帶入 measuerInfo.MIData = Regex.Replace(plainText, @"\n|\r", ""); //帶入現在時間 measuerInfo.MIDate = DateTime.Now; //新增資料,並紀錄新增後的UID var measureInfoID = DBService.MeasureInfo.InsertMeasureInfo(measuerInfo).ToString(); //將網址帶入的UID加密 var encryptID = ToolLibs.EncryptDES(measureInfoID, Config.DESKey, Config.DESIV); //組出網址 var encryptCodeURL = $"{Config.BaseURL}MInfo.aspx?UID={encryptID}"; log.Info($"回傳的網址", encryptCodeURL); var result = string.Empty; if (encryptCodeURL == "") { result = JsonConvert.SerializeObject(new { ResultCode = 404, ErrorMessage = "轉換失敗" }); Response.Write(result); } else { Response.Write(JsonConvert.SerializeObject(new { ResultCode = 200, Url = encryptCodeURL })); } log.Info($"回傳的結果,Data:{result}"); } catch (Exception ex) { log.Error($"資料轉換錯誤\n" + $"Data:{JsonConvert.SerializeObject(MIData)}\n" + $"Exception:{ex.ToString()}"); Response.Write(JsonConvert.SerializeObject(new { ResultCode = 404, ErrorMessage = $"{ex.ToString()}" })); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.InputStream.Length <= 0) { Response.Clear(); Response.ContentType = "text/plain"; Response.StatusCode = 400; Response.TrySkipIisCustomErrors = true; Response.Write("4001 資料內容格式有誤或超出正常範圍"); Response.End(); log.Info("4001 資料內容格式有誤或超出正常範圍"); return; } System.Diagnostics.Debug.WriteLine(JsonConvert.SerializeObject(Request.Headers)); string documentContents; using (Stream receiveStream = Request.InputStream) { using (StreamReader readStream = new StreamReader(receiveStream, Request.ContentEncoding)) { documentContents = readStream.ReadToEnd(); //LOG.Debug("IP:" + Request.UserHostAddress); //LOG.Debug(documentContents + Environment.NewLine); } } System.Diagnostics.Debug.WriteLine(documentContents); string[] str = documentContents.Replace("\r\n", "\n").Split('\n'); Dictionary <string, string> dic = str.Where(x => !x.StartsWith("Feedback")).ToDictionary(x => x.Split('=')[0].Trim(), x => x.Substring(x.IndexOf('=') + 1).Trim()); if (dic.ContainsKey(string.Empty)) { dic.Remove(string.Empty); } ChangeValue(ref dic); TaiDocModel result = DictionaryToObject <TaiDocModel>(dic); List <Feedback> fbl = new List <Feedback>(); List <string> dif = str.Where(x => x.StartsWith("Feedback")).ToList(); foreach (string d in dif) //解析feedbak內容 { string t = d.Replace("Feedback", ""); t = d.Substring(d.IndexOf('=') + 1).Trim(); Dictionary <string, string> fb = t.Replace("@#@", "\n").Split('\n').ToDictionary(x => x.Split('=')[0].Trim(), x => x.Substring(x.IndexOf('=') + 1).Trim()); fbl.Add(DictionaryToObject <Feedback>(fb)); } if (fbl.Count > 0) { result.Feedback = fbl.ToList(); } var settings = new JsonSerializerSettings() { ContractResolver = new NullToEmptyStringResolver() }; string json = JsonConvert.SerializeObject(result, settings); log.Info($"TaiDoc解析完成的字串", json); #region APIDataSave var dbIDNo = DBService.MemberInfo.QueryMemberInfoByIDNo(result.Member_IDNo); if (string.IsNullOrEmpty(dbIDNo)) { log.Info($"新建會員資料"); //儲存該筆資料 var memberInfo = new Models.Entity.MemberInfo(); //取得系統ID var tmpID = ToolLibs.GetDateTimeNowDefaultString(); log.Info($"新建的會員資料ID:{tmpID}"); #region MemberInfo memberInfo.ID = tmpID; memberInfo.IDNo = result.Member_IDNo; memberInfo.Name = "Test"; memberInfo.Genger = 0; memberInfo.BDate = DateTime.Now; memberInfo.Tel = ""; memberInfo.Mobile = ""; memberInfo.Email = ""; memberInfo.Fax = ""; memberInfo.Occupation = ""; memberInfo.CreateDate = DateTime.Now; #endregion log.Trace("新增會員資料", memberInfo); DBService.MemberInfo.InsertMemberInfo(memberInfo); } //建立新的測量資料 var measuerInfo = new Models.Entity.MeasureInfo(); //傳入身份證字號 measuerInfo.MemberIDNo = result.Member_IDNo; //字串處理,將多餘的 \n \r 去除,並將數據帶入 measuerInfo.MIData = Regex.Replace(json, @"\n|\r", ""); //帶入現在時間 measuerInfo.MIDate = DateTime.Now; //新增資料,並紀錄新增後的UID var measureInfoID = DBService.MeasureInfo.InsertMeasureInfo(measuerInfo).ToString(); //將網址帶入的UID加密 var encryptID = ToolLibs.EncryptDES(measureInfoID, Config.DESKey, Config.DESIV); //組出網址 var encryptCodeURL = $"{Config.BaseURL}MInfo.aspx?UID={encryptID}"; log.Info($"回傳的網址", encryptCodeURL); #endregion TransferToTaiDoc(result); Response.Clear(); Response.ContentType = "text/plain"; Response.StatusCode = 200; Response.Write("200"); Response.End(); log.Info($"回傳的結果,Data:200"); } }