/// <summary>
        /// 解析Coolwi-Header内容
        /// </summary>
        /// <param name="valueString">Coolwi-Header值</param>
        /// <returns>解析Coolwi-Header内容</returns>
        private RequestClientInfoQueryModel ResolveClientInfo(string valueString)
        {
            RequestClientInfoQueryModel model = new RequestClientInfoQueryModel();

            if (string.IsNullOrWhiteSpace(valueString))
            {
                return(model);
            }

            Dictionary <string, string> dic = new Dictionary <string, string>();

            string[] values = valueString.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var v in values)
            {
                string[] item = v.Split(new char[] { '=' });
                if (item.Length != 2)
                {
                    LogUtil.Warn(string.Format("Coolwi-Header is invalid:{0}.", valueString));
                    continue;
                }

                if (!dic.ContainsKey(item[0]))
                {
                    dic.Add(item[0], item[1]);
                }
            }

            return(JsonUtil.Deserialize <RequestClientInfoQueryModel>(JsonUtil.Serialize(dic)));
        }
        /// <summary>
        /// 从Request对象中获取Headers请求的Client-Info参数DeviceID
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private RequestClientInfoQueryModel GetClientInfo(HttpRequestBase request)
        {
            RequestClientInfoQueryModel model = new RequestClientInfoQueryModel();

            string clientInfo = request.Headers.Get("Client-Info"); //旧版格式

            if (!string.IsNullOrEmpty(clientInfo))
            {
                model = JsonUtil.Deserialize <RequestClientInfoQueryModel>(clientInfo);
            }
            else
            {
                clientInfo = request.Headers.Get("Coolwi-Header");
                model      = ResolveClientInfo(clientInfo);
            }

            return(model);
        }
        /// <summary>
        /// 获取EUrlStatViewModel对象
        /// </summary>
        /// <param name="filterContext">AuthorizationContext</param>
        /// <returns></returns>
        private EUrlStatViewModel GetUrlStatViewModel(AuthorizationContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;

            EUrlStatViewModel stat = new EUrlStatViewModel();

            stat.RequestUrl      = request.Url.Authority + request.Url.AbsolutePath;
            stat.RequestType     = request.RequestType;
            stat.SessionID       = filterContext.HttpContext.Session.SessionID;
            stat.ProSign         = "MCP";
            stat.ParamData       = GetParamData(request);
            stat.HeaderParamData = GetHeadersParam(request);
            stat.UserId          = SessionUtil.Current != null ? SessionUtil.Current.UserId : null;
            RequestClientInfoQueryModel mode = GetClientInfo(request);

            stat.DeviceId   = mode.DeviceId;
            stat.DeviceType = mode.DeviceType;
            stat.Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            stat.Action     = filterContext.ActionDescriptor.ActionName;

            return(stat);
        }