コード例 #1
0
        ShellContext CreateShellContext(ShellSettings settings)
        {
            if (settings.State.CurrentState == TenantState.State.Uninitialized)
            {
                Logger.Debug("Creating shell context for tenant {0} setup", settings.Name);
                return(_shellContextFactory.CreateSetupContext(settings));
            }

            Logger.Debug("Creating shell context for tenant {0}", settings.Name);
            return(_shellContextFactory.CreateShellContext(settings));
        }
コード例 #2
0
        private void ExecuteOnTenantScope(ShellSettings settings, Action <IWorkContextScope> action)
        {
            var shellContext = _shellContextFactory.CreateShellContext(settings);

            using (var container = _shellContainerFactory.CreateContainer(shellContext.Settings, shellContext.Blueprint)) {
                using (var environment = container.CreateWorkContextScope()) {
                    action(environment);
                }
            }
        }
コード例 #3
0
ファイル: DefaultPlatoHost.cs プロジェクト: radtek/Plato
        public ShellContext CreateShellContext(IShellSettings settings)
        {
            if (settings.State == TenantState.Uninitialized)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating shell context for tenant {0}", settings.Name);
                }
                return(_shellContextFactory.CreateSetupContext(settings));
            }

            _logger.LogDebug("Creating shell context for tenant {0}", settings.Name);
            return(_shellContextFactory.CreateShellContext(settings));
        }
コード例 #4
0
        public async Task Invoke(HttpContext httpContext)
        {
            var currentApplicationServices = httpContext.ApplicationServices;
            var currentRequestServices     = httpContext.RequestServices;

            var shellSettings = _shellSettingsManager.LoadSettings();
            var shellSetting  = shellSettings.SingleOrDefault(x => x.RequestUrlPrefix == httpContext.Request.Host.Value);

            if (shellSetting != null)
            {
                using (var shell = _shellContextFactory.CreateShellContext(shellSetting)) {
                    httpContext.RequestServices = shell.LifetimeScope;

                    shell.Shell.Activate();
                    await _next.Invoke(httpContext);
                }
            }
            else
            {
                await _next.Invoke(httpContext);
            }
        }
コード例 #5
0
        /// <summary>
        /// Creates a shell context based on shell settings
        /// </summary>
        public ShellContext CreateShellContext(ShellSettings settings)
        {
            if (settings.State == TenantState.Uninitialized)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating shell context for tenant {0} setup", settings.Name);
                }

                return(_shellContextFactory.CreateSetupContext(settings));
            }
            else if (settings.State == TenantState.Disabled)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating disabled shell context for tenant {0} setup", settings.Name);
                }

                return(new ShellContext {
                    Settings = settings
                });
            }
            else if (settings.State == TenantState.Running || settings.State == TenantState.Initializing)
            {
                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug("Creating shell context for tenant {0}", settings.Name);
                }

                return(_shellContextFactory.CreateShellContext(settings));
            }
            else
            {
                throw new InvalidOperationException("Unexpected shell state for " + settings.Name);
            }
        }
コード例 #6
0
 private ShellContext CreateShellContext(ShellSettings settings)
 {
     Logger.Debug("为租户 {0} 创建外壳上下文", settings.Name);
     return(_shellContextFactory.CreateShellContext(settings));
 }
コード例 #7
0
 private ShellContext CreateShellContext(ShellSettings settings)
 {
     Logger.DebugFormat("Creating shell context for tenant {0}", settings.Name);
     return(shellContextFactory.CreateShellContext(settings));
 }