public bool StopSession(IUser user)
 {
     return(ScriptContexts.Keys
            .ToList()
            .Where(c => c.Id.Equals(user.Id, StringComparison.OrdinalIgnoreCase))
            .All(c => ScriptContexts.Remove(c)));
 }
        public IScriptContext StartSession(IDependencyContainer container, IUser user, string providerName)
        {
            var context = GetScriptContext(user);

            if (context != null)
            {
                return(context);
            }

            var provider = GetScriptingProvider(container, providerName);

            if (provider != null)
            {
                context = provider.CreateScriptContext(container);
                context.SetGlobalVariables();
                context.SetGlobalVariable("me", user);
                ScriptContexts.Add(user, context);
                return(context);
            }

            return(null);
        }