Friday, September 21, 2012

Maintaining Session Variable in DLL in Asp.Net

In order to control Session Variable in DLL, the class need to inherit from IRequiresSessionState interface and set the class Serializable attribute.
The property should be static (class member) in order to avoid instantiate new object.
eg. CurrentUserSESSION.USER_ID 

public enum SESSION_NAME
    {
        USER_ID,
        USER_PASSWORD,
        USER_FULLNAME,
        USER_ROLE
    }

    [Serializable()]
    public class CurrentUserSESSION : IRequiresSessionState
    {
        public static string USER_ID        {
            get
            {
                return GetSessionValue<string>(SESSION_NAME.USER_ID);
            }
            set
            {
                SetSessionValue<string>(SESSION_NAME.USER_ID, value);
            }
        }
        public static string USER_PASSWORD //login user id
        {
            get
            {
                return GetSessionValue<string>(SESSION_NAME.USER_PASSWORD);
            }
            set
            {
                SetSessionValue<string>(SESSION_NAME.USER_PASSWORD, value);
            }
        }
        public static string USER_FULLNAME
        {
            get
            {
                return GetSessionValue<string>(SESSION_NAME.USER_FULLNAME);
            }
            set
            {
                SetSessionValue<string>(SESSION_NAME.USER_FULLNAME, value);
            }
        }
        public static string USER_ROLE
        {
            get
            {
                return GetSessionValue<string>(SESSION_NAME.USER_ROLE);
            }
            set
            {
                SetSessionValue<string>(SESSION_NAME.USER_ROLE, value);
            }
        }
      
        public CurrentUserSESSION()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        private static T GetSessionValue<T>(SESSION_NAME SESSIONNAME)
        {
            if (null != HttpContext.Current.Session[SESSIONNAME.ToString()])
                return (T)HttpContext.Current.Session[SESSIONNAME.ToString()];
            else
                return default(T);
        }

        private static void SetSessionValue<T>(SESSION_NAME SESSIONNAME, T SESSIONVALUE)
        {
            HttpContext.Current.Session[SESSIONNAME.ToString()] = SESSIONVALUE;
        }
    }

1 comment: