public static void HttpToSignalR(MigrateSession attribute, bool migrate = true)
        {
            string SessionIDCookieKey = InternalSessionKeys.SessionIDCookieKey;
            string MigrateBackFlagKey = InternalSessionKeys.MigrateBackFlagKey;

            HttpSessionState Session = HttpContext.Current.Session;

            if (Session == null)
            {
                throw new Exception("HttpSession doesn't exsist");
            }

            SignalRContext.SessionProvider.ClearSession(Session.SessionID);

            if (migrate)
            {
                for (int i = 0; i < Session.Keys.Count; i++)
                {
                    string key = Session.Keys[i];
                    SignalRContext.SessionProvider[Session.SessionID][key] = Session[key];
                }
            }
            SignalRContext.SessionProvider[Session.SessionID][MigrateBackFlagKey] = attribute.MigrateBack;


            // cookie cleenup
            HttpCookie requestCookie  = HttpContext.Current.Request.Cookies[SessionIDCookieKey];
            HttpCookie responseCookie = HttpContext.Current.Response.Cookies[SessionIDCookieKey];

            if (requestCookie != null)
            {
                HttpContext.Current.Request.Cookies.Remove(SessionIDCookieKey);
            }
            if (responseCookie != null)
            {
                HttpContext.Current.Response.Cookies.Remove(SessionIDCookieKey);
            }

            HttpCookie cookie = new HttpCookie(SessionIDCookieKey, Session.SessionID);

            cookie.Expires  = DateTime.MaxValue;
            cookie.HttpOnly = true;
            HttpContext.Current.Response.Cookies.Add(cookie);
        }
        public static void HttpToSignalR(MigrateSession attribute, bool migrate = true)
        {
            string SessionIDCookieKey = InternalSessionKeys.SessionIDCookieKey;
            string MigrateBackFlagKey = InternalSessionKeys.MigrateBackFlagKey;

            HttpSessionState Session = HttpContext.Current.Session;
            if (Session == null)
            {
                throw new Exception("HttpSession doesn't exsist");
            }

            SignalRContext.SessionProvider.ClearSession(Session.SessionID);

            if (migrate)
            {
                for (int i = 0; i < Session.Keys.Count; i++)
                {
                    string key = Session.Keys[i];
                    SignalRContext.SessionProvider[Session.SessionID][key] = Session[key];
                }
            }
            SignalRContext.SessionProvider[Session.SessionID][MigrateBackFlagKey] = attribute.MigrateBack;


            // cookie cleenup
            HttpCookie requestCookie = HttpContext.Current.Request.Cookies[SessionIDCookieKey];
            HttpCookie responseCookie = HttpContext.Current.Response.Cookies[SessionIDCookieKey];

            if (requestCookie != null)
            {
                HttpContext.Current.Request.Cookies.Remove(SessionIDCookieKey);
            }
            if (responseCookie != null)
            {
                HttpContext.Current.Response.Cookies.Remove(SessionIDCookieKey);
            }

            HttpCookie cookie = new HttpCookie(SessionIDCookieKey, Session.SessionID);
            cookie.Expires = DateTime.MaxValue;
            cookie.HttpOnly = true;
            HttpContext.Current.Response.Cookies.Add(cookie);
        }
 public static void Execute(bool migrateBack = false)
 {
     MigrateSession.HttpToSignalR(new MigrateSession(migrateBack));
 }