/// <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 ? "启动网站失败。" : "启动网站完成。"); }