public ISession GetSessionForKey(string factoryKey)
        {
            if (OperationContext.Current == null)
            {
                return(this.FallbackSessionStorage.GetSessionForKey(factoryKey));
            }

            SessionInstanceExtension instance = GetSessionInstanceExtension();

            return(instance.GetSessionForKey(factoryKey));
        }
        public IEnumerable <ISession> GetAllSessions()
        {
            if (OperationContext.Current == null)
            {
                return(this.FallbackSessionStorage.GetAllSessions());
            }

            SessionInstanceExtension instance = GetSessionInstanceExtension();

            return(instance.GetAllSessions());
        }
        private SessionInstanceExtension GetSessionInstanceExtension()
        {
            SessionInstanceExtension instance =
                OperationContext.Current.InstanceContext.Extensions.Find <SessionInstanceExtension>();

            if (instance == null)
            {
                throw new Exception("SessionInstanceExtension not found in current OperationContext");
            }

            return(instance);
        }
        public void SetSessionForKey(string factoryKey, ISession session)
        {
            if (OperationContext.Current == null)
            {
                this.FallbackSessionStorage.SetSessionForKey(factoryKey, session);
                return;
            }

            SessionInstanceExtension instance = GetSessionInstanceExtension();

            instance.SetSessionForKey(factoryKey, session);
        }