From 0c6d2420f270d64ef5141a5351a3ea5d6df88b13 Mon Sep 17 00:00:00 2001 From: cKey <35512826+colinin@users.noreply.github.com> Date: Fri, 14 Jan 2022 23:33:51 +0800 Subject: [PATCH] fix: IServiceCollection.ExecutePreConfiguredActions extension should be in the service before starting --- .../Abp/EventBus/CAP/AbpCAPEventBusModule.cs | 8 +++++-- .../Dashboard/AbpHangfireDashboardModule.cs | 8 +++++-- .../DynamicLocalizationInitializeService.cs | 21 ++++++++++++------- .../Sms/AbpNotificationsSmsModule.cs | 6 ++++-- .../Notifications/AbpNotificationModule.cs | 7 ++++--- .../README.md | 3 ++- ...AbpNotificationsWeChatMiniProgramModule.cs | 8 ++++--- .../Abp/WorkflowCore/AbpWorkflowCoreModule.cs | 3 ++- ...owManagementHttpApiHostModule.Configure.cs | 3 ++- build/modules.dependencies.json | 1 + 10 files changed, 45 insertions(+), 23 deletions(-) diff --git a/aspnet-core/modules/common/LINGYUN.Abp.EventBus.CAP/LINGYUN/Abp/EventBus/CAP/AbpCAPEventBusModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.EventBus.CAP/LINGYUN/Abp/EventBus/CAP/AbpCAPEventBusModule.cs index fe13cad0c..be006a6d2 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.EventBus.CAP/LINGYUN/Abp/EventBus/CAP/AbpCAPEventBusModule.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.EventBus.CAP/LINGYUN/Abp/EventBus/CAP/AbpCAPEventBusModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Configuration; +using DotNetCore.CAP; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.EventBus; using Volo.Abp.Modularity; @@ -23,13 +24,16 @@ namespace LINGYUN.Abp.EventBus.CAP context.Services.AddTransient(); + var preActions = context.Services.GetPreConfigureActions(); + context.Services.AddCAPEventBus(options => { // 取消默认的五分钟高频清理 // options.CollectorCleaningInterval = 360_0000; configuration.GetSection("CAP:EventBus").Bind(options); - context.Services.ExecutePreConfiguredActions(options); + preActions.Configure(options); + if (options.FailedThresholdCallback == null) { options.FailedThresholdCallback = async (failed) => diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Hangfire.Dashboard/LINGYUN/Abp/Hangfire/Dashboard/AbpHangfireDashboardModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Hangfire.Dashboard/LINGYUN/Abp/Hangfire/Dashboard/AbpHangfireDashboardModule.cs index a58a0a12a..af478ed22 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Hangfire.Dashboard/LINGYUN/Abp/Hangfire/Dashboard/AbpHangfireDashboardModule.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Hangfire.Dashboard/LINGYUN/Abp/Hangfire/Dashboard/AbpHangfireDashboardModule.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.DependencyInjection; +using Hangfire; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Authorization; using Volo.Abp.Hangfire; using Volo.Abp.Modularity; @@ -12,10 +13,13 @@ namespace LINGYUN.Abp.Hangfire.Dashboard { public override void ConfigureServices(ServiceConfigurationContext context) { + var preActions = context.Services.GetPreConfigureActions(); context.Services.AddTransient(serviceProvider => { var options = serviceProvider.GetRequiredService().Get(); - return context.Services.ExecutePreConfiguredActions(options); + preActions.Configure(options); + + return options; }); } } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs index 49949ccf3..23413032c 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; +using System; using System.Threading; using System.Threading.Tasks; using Volo.Abp.Localization; @@ -24,20 +25,24 @@ namespace LINGYUN.Abp.Localization.Dynamic protected override async Task ExecuteAsync(CancellationToken stoppingToken) { - foreach (var resource in LocalizationOptions.Resources) + try { - foreach (var contributor in resource.Value.Contributors) + foreach (var resource in LocalizationOptions.Resources) { - if (contributor.GetType().IsAssignableFrom(typeof(DynamicLocalizationResourceContributor))) + foreach (var contributor in resource.Value.Contributors) { - var resourceLocalizationDic = await Store - .GetLocalizationDictionaryAsync( - resource.Value.ResourceName, - stoppingToken); - DynamicOptions.AddOrUpdate(resource.Value.ResourceName, resourceLocalizationDic); + if (contributor.GetType().IsAssignableFrom(typeof(DynamicLocalizationResourceContributor))) + { + var resourceLocalizationDic = await Store + .GetLocalizationDictionaryAsync( + resource.Value.ResourceName, + stoppingToken); + DynamicOptions.AddOrUpdate(resource.Value.ResourceName, resourceLocalizationDic); + } } } } + catch (OperationCanceledException) { } // 忽略此异常 } } } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Notifications.Sms/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Notifications.Sms/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsModule.cs index 4df128bec..4f5f3af8e 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Notifications.Sms/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsModule.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Notifications.Sms/LINGYUN/Abp/Notifications/Sms/AbpNotificationsSmsModule.cs @@ -11,16 +11,18 @@ namespace LINGYUN.Abp.Notifications.Sms { public override void ConfigureServices(ServiceConfigurationContext context) { + var preSmsActions = context.Services.GetPreConfigureActions(); Configure(options => { - context.Services.ExecutePreConfiguredActions(options); + preSmsActions.Configure(options); }); Configure(options => { options.PublishProviders.Add(); - var smsOptions = context.Services.ExecutePreConfiguredActions(); + var smsOptions = preSmsActions.Configure(); + options.NotificationDataMappings .MappingDefault( SmsNotificationPublishProvider.ProviderName, diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Notifications/LINGYUN/Abp/Notifications/AbpNotificationModule.cs b/aspnet-core/modules/common/LINGYUN.Abp.Notifications/LINGYUN/Abp/Notifications/AbpNotificationModule.cs index 508cf8756..3d6a5d2e0 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Notifications/LINGYUN/Abp/Notifications/AbpNotificationModule.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Notifications/LINGYUN/Abp/Notifications/AbpNotificationModule.cs @@ -49,7 +49,7 @@ namespace LINGYUN.Abp.Notifications } } - private static void AutoAddDefinitionProviders(IServiceCollection services) + private void AutoAddDefinitionProviders(IServiceCollection services) { var definitionProviders = new List(); @@ -61,9 +61,10 @@ namespace LINGYUN.Abp.Notifications } }); - services.Configure(options => + var preActions = services.GetPreConfigureActions(); + Configure(options => { - services.ExecutePreConfiguredActions(options); + preActions.Configure(options); options.DefinitionProviders.AddIfNotContains(definitionProviders); }); } diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/README.md b/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/README.md index 58e9f6168..64d9a87fa 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/README.md +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.BlobStoring.OssManagement/README.md @@ -41,9 +41,10 @@ public class YouProjectModule : AbpModule public override void ConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); + var preActions = context.Services.GetPreConfigureActions(); Configure(options => { - services.ExecutePreConfiguredActions(options); + preActions.Configure(options); // YouContainer use oss management options.Containers.Configure((containerConfiguration) => { diff --git a/aspnet-core/modules/wechat/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramModule.cs b/aspnet-core/modules/wechat/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramModule.cs index 927308242..fbf9fd428 100644 --- a/aspnet-core/modules/wechat/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramModule.cs +++ b/aspnet-core/modules/wechat/LINGYUN.Abp.Notifications.WeChat.MiniProgram/LINGYUN/Abp/Notifications/WeChat/MiniProgram/AbpNotificationsWeChatMiniProgramModule.cs @@ -10,17 +10,19 @@ namespace LINGYUN.Abp.Notifications.WeChat.MiniProgram public class AbpNotificationsWeChatMiniProgramModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) - { + { + var preActions = context.Services.GetPreConfigureActions(); + Configure(options => { - context.Services.ExecutePreConfiguredActions(options); + preActions.Configure(options); }); Configure(options => { options.PublishProviders.Add(); - var wechatOptions = context.Services.ExecutePreConfiguredActions(); + var wechatOptions = preActions.Configure(); options.NotificationDataMappings .MappingDefault(WeChatMiniProgramNotificationPublishProvider.ProviderName, data => NotificationData.ToStandardData(wechatOptions.DefaultMsgPrefix, data)); diff --git a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore/LINGYUN/Abp/WorkflowCore/AbpWorkflowCoreModule.cs b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore/LINGYUN/Abp/WorkflowCore/AbpWorkflowCoreModule.cs index 97a49d442..2016c54eb 100644 --- a/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore/LINGYUN/Abp/WorkflowCore/AbpWorkflowCoreModule.cs +++ b/aspnet-core/modules/workflow/LINGYUN.Abp.WorkflowCore/LINGYUN/Abp/WorkflowCore/AbpWorkflowCoreModule.cs @@ -36,9 +36,10 @@ namespace LINGYUN.Abp.WorkflowCore public override void ConfigureServices(ServiceConfigurationContext context) { + var preActions = context.Services.GetPreConfigureActions(); context.Services.AddWorkflow(options => { - context.Services.ExecutePreConfiguredActions(options); + preActions.Configure(options); }); context.Services.AddWorkflowDSL(); diff --git a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs index d8e359749..b61dec366 100644 --- a/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs +++ b/aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs @@ -44,9 +44,10 @@ public partial class WorkflowManagementHttpApiHostModule private void ConfigureBlobStoring(IServiceCollection services, IConfiguration configuration) { + var preActions = services.GetPreConfigureActions(); Configure(options => { - services.ExecutePreConfiguredActions(options); + preActions.Configure(options); options.Containers.Configure((containerConfiguration) => { containerConfiguration.UseOssManagement(config => diff --git a/build/modules.dependencies.json b/build/modules.dependencies.json index a6141ad42..240d6e18c 100644 --- a/build/modules.dependencies.json +++ b/build/modules.dependencies.json @@ -58,6 +58,7 @@ "LINGYUN.Abp.Features.LimitValidation.Redis.dll", "LINGYUN.Abp.WorkflowManagement.Application.Contracts.dll", "LINGYUN.Abp.WorkflowManagement.Domain.Shared.dll", + "LINGYUN.Abp.BackgroundTasks.Abstractions.dll", "LINGYUN.Abp.TaskManagement.Application.Contracts.dll", "LINGYUN.Abp.TaskManagement.Domain.Shared.dll" ]