示例#1
0
        /// <summary>
        /// 从Request对象中获取Headers请求的Client-Info参数DeviceID
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private RequestClientInfoModel GetClientInfo(HttpRequestMessage request)
        {
            RequestClientInfoModel model = new RequestClientInfoModel();

            string clientInfo = string.Empty;

            if (!string.IsNullOrEmpty(clientInfo))
            {
                try
                {
                    model = JsonUtil.Deserialize <RequestClientInfoModel>(clientInfo);
                }
                catch (Exception ex)
                {
                    LogUtil.Warn(string.Format("Coolwi-Header is invalid:{0}.", ex.Message));
                    throw new MessageException("Http请求头信息格式不正确。");
                }
            }
            else
            {
                if (request.Headers.Contains("Coolwi-Header"))
                {
                    clientInfo = request.Headers.GetValues("Coolwi-Header").FirstOrDefault();
                }
                model = ResolveClientInfo(clientInfo);
            }

            return(model);
        }
示例#2
0
        /// <summary>
        /// 解析Coolwi-Header内容
        /// </summary>
        /// <param name="valueString">Coolwi-Header值</param>
        /// <returns>解析Coolwi-Header内容</returns>
        private RequestClientInfoModel ResolveClientInfo(string valueString)
        {
            RequestClientInfoModel model = new RequestClientInfoModel();

            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 <RequestClientInfoModel>(JsonUtil.Serialize(dic)));
        }
        /// <summary>
        /// 从Request对象中获取Headers请求的Client-Info参数DeviceID
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private RequestClientInfoModel GetClientInfo(HttpRequestMessage request)
        {
            var model      = new RequestClientInfoModel();
            var clientInfo = string.Empty;

            if (request.Headers.Contains("Yingmei-Header"))
            {
                model = ResolveClientInfo(request.Headers.GetValues("Yingmei-Header").FirstOrDefault());
            }
            return(model);
        }
示例#4
0
        /// <summary>
        /// 初始化Session和当前用户
        /// </summary>
        /// <param name="cookies">Collection</param>
        /// <param name="bc">BaseController</param>
        private void InitiSession(Collection <CookieHeaderValue> cookies, HttpActionContext actionContext, BaseController bc)
        {
            if (cookies == null || cookies.Count == 0)
            {
                bc.Session = SessionManager.CreateSession();
            }
            else
            {
                string sessionID = string.Empty;
                foreach (CookieState cookieState in cookies[0].Cookies)
                {
                    if (cookieState.Name == "SessionID")
                    {
                        sessionID = cookieState.Value;
                        break;
                    }
                }
                Session session = SessionManager.GetSession(sessionID);

                if (session == null)
                {
                    bc.Session = SessionManager.CreateSession();
                }
                else
                {
                    bc.Session = session;
                }
            }

            //获取客户端信息
            RequestClientInfoModel clientModel = new RequestClientInfoModel();

            if (bc.Session.ContainsKey(Consts.CLIENT_INFO_SESSION_KEY))
            {
                var clientSeesion = bc.Session[Consts.CLIENT_INFO_SESSION_KEY];
                if (clientSeesion != null)
                {
                    clientModel = bc.Session[Consts.CLIENT_INFO_SESSION_KEY] as RequestClientInfoModel;
                }
            }
            else
            {
                clientModel          = GetClientInfo(actionContext.Request);
                clientModel.ClientIP = CommonUtil.GetClientIp(actionContext.Request);
                bc.Session[Consts.CLIENT_INFO_SESSION_KEY] = clientModel;
            }

            //设置Service中的ContextUser
            ServiceContext.Current.ContextUser = new SysServericeContext(bc.Session.SessionID);

            //设置Service中的RequestTerminal
            ServiceContext.Current.RequestTerminal = new PrdRequestTerminal(bc.Session.SessionID);
        }