private Task <OperationResultGeneralRep> SyncSendTextInfo(TerminalOperationClient client, string terminalCode, SendTextMessageModel model) { return(client.SendTextInfoAsync(terminalCode, new TextInformationData() { Content = model.MessageText.Trim(), TextInformationFlag = (TextInformationFlag)model.Flags })); //return client.sendtextinfoasync(terminalcode, new textinformationdata() //{ // content = model.messagetext.trim(), // textinformationflag = (textinformationflag)model.flags //}); //return Task<OperationResultGeneralRep>.Run(() => //{ // return client.SendTextInfo(terminalCode, new TextInformationData() // { // Content = model.MessageText.Trim(), // TextInformationFlag = (TextInformationFlag)model.Flags // }); //}); }
public async Task <ActionResult> SendTextMessage(SendTextMessageModel model) { ActionResult result = null; List <TerminalWCfModel> wcfList = null; if (!this.CheckWCF(model.ListVehicles, out result, out wcfList)) { return(result); } //升级指令包含<>,但是为了安全性是不允许提交<>这样的html字符的,虽然可以通过一下方式让MVC项目的请求允许通过html字符,但是不合适,所以 //这里呢要求数据本身是html编码,到后台再转回成已解码的字符串 //比如 升级指令 <EXT87DDE2B7AE0B45FX-GPS000000000000000000PP> ,在文本框里输入<EXT87DDE2B7AE0B45FX-GPS000000000000000000PP> //到后台再解码成<>就行了 /** * web.config里面加上 * * <system.web> * <httpRuntime requestValidationMode="2.0" /> * </system.web> */ var realMessageText = System.Web.HttpUtility.HtmlDecode(model.MessageText); model.MessageText = realMessageText; // 记录错误信息 string errorMsg = string.Empty; try { // 所有任务完成时获取返回结果 var syncResult = await this.DoOperation <SendTextMessageModel, OperationResultGeneralRep>(wcfList, model, SyncSendTextInfo).ConfigureAwait(false); int index = 0; string valuesSql = string.Empty; string setInfo = "Flags:" + (TextInformationFlag)model.Flags + ",MessageText:" + model.MessageText; string wanIP = GetRemoteAddress(); DateTime setDTime = DateTime.Now; foreach (var item in syncResult) { string plateNum = wcfList[index].PlateNum; string resultResponse = "Code:" + (int)(OperationResultCode)item.Code + ";Message:" + item.Message; // 记录日志 文本消息下发 这里拼接sql语句 批量插入 valuesSql += string.Format("('{0}','{1}',{2},'{3}',{4},'{5}','{6}',{7},'{8}'),", wcfList[index].TerminalCode, plateNum, (byte)TerminalSettingTypeEnum.TextMessage, setInfo, item.State ? 1 : 0, resultResponse, wanIP, base.CurrentUserID, setDTime); if (!item.State) { //errorMsg += string.Format("<div style='font-weight:bolder;'>" + UIText.TerminalSetting_PlateNumber + ":{0}{1}," + PromptInformation.FailReason+ ":{2}{3}</div>", plateNum, "<br/>", // item.Code.ToString(), "<hr/>"); errorMsg += ErrorMesage(plateNum, item.Code.ToString()); } index++; } // 批量插入日志 TerminalSettingsBLL.BatchInsertTerminalOperationsLog(valuesSql.TrimEnd(',')); } catch (Exception ex) { LogHelper.TerminalSettingsErrorLog("下发文本消息异常:" + ex.Message); return(Json(new { Success = false, Message = PromptInformation.RemotingError })); } if (string.IsNullOrEmpty(errorMsg)) { return(Json(new { Success = true, Message = PromptInformation.TerminalSetting_SendTextMessageSuccess })); } else { return(Json(new { Success = false, Message = errorMsg })); } }