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> ,在文本框里输入&lt;EXT87DDE2B7AE0B45FX-GPS000000000000000000PP&gt;
            //到后台再解码成<>就行了

            /**
             * 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 }));
            }
        }