/// <summary>
        /// 刷新指定Session状态(改变此Session最近的活动时间为当前时间, 若为预登出则并重设SessionEvent)
        /// </summary>
        public void RefreshState()
        {
            lock (this)
            {
                this._lastActiveTime = DateTime.Now.ToString();

                if (SessionEvent == UserSessionEventEnum.PrepTimeout &&
                    (_logonInfo.AuthType == LoginTypeEnum.PCClient || _logonInfo.AuthType == LoginTypeEnum.PCIE))
                {
                    SessionEvent = UserSessionEventEnum.Login;
                }
            }
        }
        /// <summary>
        /// 用户注销或者页面超时时释放用户状态对象
        /// </summary>
        /// <param name="passCode"></param>
        /// <param name="sessionEvent">触发事件方式</param>
        /// <returns></returns>
        public bool ReleaseSession(string sessionID, UserSessionEventEnum sessionEvent)
        {
            UserSession userSession = (UserSession)_sessions[sessionID];

            userSession.SessionEvent = sessionEvent;


            // 若触发事件为logout(主动登出), 则若登入方式为未知的话,则放弃登出
            if (sessionEvent == UserSessionEventEnum.Logout && userSession.SessionEvent != UserSessionEventEnum.Login)
            {
                // return false;
            }

            if (userSession != null)
            {
                /*--写事件日志开始--*/
                SysEvent evt = new SysEvent();
                evt.UserID    = userSession.User.UserID;
                evt.LoginName = userSession.User.LoginName;
                evt.IP        = userSession.LogonInfo.IP;
                evt.Record    = String.Format("ReleaseSession({0}, {1})", sessionID, sessionEvent.ToString());
                evt.DoCreate();
                /*--写事件日志结束--*/

                lock (_sessions)
                {
                    _sessions.Remove(sessionID);
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// 创建新的用户Session
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="ip"></param>
        /// <param name="mac"></param>
        /// <param name="stateEvent"></param>
        /// <param name="sessionEvent">触发创建的事件类型</param>
        /// <returns></returns>
        public UserSession CreateSession(string userID, string ip, string mac, LoginTypeEnum authType, UserSessionEventEnum sessionEvent)
        {
            UserSession session = new UserSession(userID);

            session.LogonInfo.IP       = ip;
            session.LogonInfo.MAC      = mac;
            session.LogonInfo.AuthType = authType;
            session.SessionEvent       = sessionEvent;

            try
            {
                lock (_sessions)
                {
                    _sessions.Add(session.SessionID, session);
                }
            }
            catch (Exception) { }

            /*--写事件日志开始--*/
            SysEvent evt = new SysEvent();

            evt.UserID    = session.User.UserID;
            evt.LoginName = session.User.LoginName;
            evt.IP        = session.LogonInfo.IP;
            evt.Record    = String.Format("CreateSession({0}, {1}, {2}, {3})", userID, ip, authType.ToString(), sessionEvent.ToString());
            evt.DoCreate();
            /*--写事件日志结束--*/

            return(session);
        }