From 9133ce97e2cd1aae8a5f8fd62ceec8c32c1ae137 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 8 Feb 2026 14:40:17 +0800 Subject: [PATCH] refactor: make GetRemoteConfigurationAsync and Get methods virtual for extensibility --- ...MvcCachedApplicationConfigurationClient.cs | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs index 684e99022b..5d87371ae8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs @@ -84,7 +84,7 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu return configuration; } - private async Task GetRemoteConfigurationAsync() + protected virtual async Task GetRemoteConfigurationAsync() { var cultureName = CultureInfo.CurrentUICulture.Name; @@ -103,23 +103,13 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu } ); - var config = await configTask; + await Task.WhenAll(configTask, localizationTask); - ApplicationLocalizationDto localizationDto; - // In most cases, the culture matches and we can reuse the concurrent request. - // If not, we discard it and make a new request with the correct culture. - if (CultureHelper.IsCompatibleCulture(config.Localization.CurrentCulture.Name, cultureName)) - { - localizationDto = await localizationTask; - } - else - { - // Observe the discarded task to prevent UnobservedTaskException. - _ = localizationTask.ContinueWith( - static t => _ = t.Exception, - TaskContinuationOptions.OnlyOnFaulted - ); + var config = configTask.Result; + var localizationDto = localizationTask.Result; + if (!CultureHelper.IsCompatibleCulture(config.Localization.CurrentCulture.Name, cultureName)) + { localizationDto = await ApplicationLocalizationClientProxy.GetAsync( new ApplicationLocalizationRequestDto { @@ -134,7 +124,7 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu return config; } - public ApplicationConfigurationDto Get() + public virtual ApplicationConfigurationDto Get() { string? cacheKey = null; var httpContext = HttpContextAccessor?.HttpContext;