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