刚到一新公司~看到其中一个系统用了超多session~平均一个页面不会少于10个~大部分session都是保存一些简单信息~貌似访问量也不算少~这样内存太无辜了~请问有什么什么好方法可以解决?

解决方案 »

  1.   


    /// <summary>
        /// 管理员状态
        /// </summary>
        public class CAdminState
        {
            private static Dictionary<string, string> LoginInfo
            {
                get 
                {
                    Dictionary<string, string> GetDictionary = HttpContext.Current.Session["GetDictionary"] as Dictionary<string, string>;
                    if (GetDictionary == null)
                    {
                        GetDictionary = new Dictionary<string, string>();
                        HttpContext.Current.Session["GetDictionary"] = GetDictionary;
                    }
                    return GetDictionary;
                }
            }        private static int? IntNull = null;
            /// <summary>
            /// 编号
            /// </summary>
            public static int? ID
            {
                set
                {
                    LoginInfo["ID"] = value.ToString();
                }
                get
                {
                    return LoginInfo.ContainsKey("ID") ? Convert.ToInt32(LoginInfo["ID"]) : IntNull;
                }
            }
            
            /// <summary>
            /// 用户名
            /// </summary>
            public static string UserName
            {
                set 
                {
                    LoginInfo["UserName"] = value;
                }
                get
                {
                    return LoginInfo.ContainsKey("UserName") ? LoginInfo["UserName"] : String.Empty;
                }
            }        /// <summary>
            /// 权限组
            /// </summary>
            public static int? PermissionGroupID
            {
                set { LoginInfo["PermissionGroupID"] = value.ToString(); }
                get { return LoginInfo.ContainsKey("PermissionGroupID") ? Convert.ToInt32(LoginInfo["PermissionGroupID"]) : IntNull; }
            }        /// <summary>
            /// 子用户
            /// </summary>
            public static string ChildUsers
            {
                set
                {
                    LoginInfo["ChildUsers"] = value;
                }
                get
                {
                    return LoginInfo.ContainsKey("ChildUsers") ? LoginInfo["ChildUsers"] : String.Empty;
                }
            }        /// <summary>
            /// 权限
            /// </summary>
            public static string Permissions
            {
                set { LoginInfo["Permissions"] = value; }
                get { return LoginInfo.ContainsKey("Permissions") ? LoginInfo["Permissions"] : String.Empty; }
            }        /// <summary>
            /// 公司名称
            /// </summary>
            public static string CompanyName
            {
                set { LoginInfo["CompanyName"] = value; }
                get { return LoginInfo.ContainsKey("CompanyName") ? LoginInfo["CompanyName"] : String.Empty; }
            }        /// <summary>
            /// 清除状态
            /// </summary>
            public static void ClearState()
            {
                LoginInfo.Clear();
            }
        }直接调用属性即可
    所以信用保存在键值对里,再把键值对保存到Session中,通过引用的方式实现值的存取,这样只占用一个session
      

  2.   


    你地意思是session只保存键,然后根据键找到值?~~貌似这样没有变化的~
      

  3.   

    是一个Session 存了很多个 数据吧?!