Пример #1
0
        /// <summary>
        /// 设置成功。
        /// </summary>
        /// <param name="status">状态。</param>
        /// <returns>返回保存结果。</returns>
        public async Task <bool> SuccessAsync(InitializerStatus status)
        {
            var registration = await GetRegistrationAsync();

            registration.Status = status;
            return(await SaveRegistrationAsync(registration));
        }
        /// <summary>
        /// 执行的后台任务方法。
        /// </summary>
        /// <param name="cancellationToken">取消标识。</param>
        /// <returns>返回任务实例。</returns>
        protected override async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            //数据库迁移
            await ExecuteDataMigrationAsync(cancellationToken);

            //启动网站
            _logger.LogInformation("启动网站...");
            var registration = await _installerManager.GetRegistrationAsync();

            if (registration.Expired < DateTimeOffset.Now)
            {
                //todo:远程连接获取验证信息
                registration.Status = InitializerStatus.Expired;
            }
            else
            {
                try
                {
                    using (var scope = _serviceProvider.CreateScope())
                    {
                        var initializers = scope.ServiceProvider.GetService <IEnumerable <IInitializer> >();
                        if (initializers != null)
                        {
                            initializers = initializers.OrderByDescending(x => x.Priority);
                            foreach (var initializer in initializers)
                            {
                                if (!await initializer.IsDisabledAsync())
                                {
                                    await initializer.ExecuteAsync();
                                }
                            }
                        }
                    }

                    registration.Status = InitializerStatus.Success;
                }
                catch (Exception exception)
                {
                    _logger.LogError(exception, "网站初始化失败!");
                }
            }

            await _installerManager.SaveRegistrationAsync(registration);

            Current = registration.Status;
            _logger.LogInformation(Current == InitializerStatus.Failured ? "启动网站失败。" : "启动网站完成。");
        }