diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs index eec9af02fb..74f263198b 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs @@ -23,7 +23,7 @@ public abstract class AbpApplicationBase : IAbpApplication public IServiceCollection Services { get; } public IReadOnlyList Modules { get; } - + public string ApplicationName { get; } private bool _configuredServices; @@ -43,7 +43,7 @@ public abstract class AbpApplicationBase : IAbpApplication var options = new AbpApplicationCreationOptions(services); optionsAction?.Invoke(options); - + ApplicationName = GetApplicationName(options); services.AddSingleton(this); @@ -147,7 +147,7 @@ public abstract class AbpApplicationBase : IAbpApplication public virtual async Task ConfigureServicesAsync() { CheckMultipleConfigureServices(); - + var context = new ServiceConfigurationContext(Services); Services.AddSingleton(context); @@ -312,7 +312,7 @@ public abstract class AbpApplicationBase : IAbpApplication _configuredServices = true; } - + private static string GetApplicationName(AbpApplicationCreationOptions options) { if (!string.IsNullOrWhiteSpace(options.ApplicationName)) @@ -324,12 +324,12 @@ public abstract class AbpApplicationBase : IAbpApplication if (configuration != null) { var appNameConfig = configuration["ApplicationName"]; - if (string.IsNullOrWhiteSpace(appNameConfig)) + if (!string.IsNullOrWhiteSpace(appNameConfig)) { return appNameConfig; } } - + var entryAssembly = Assembly.GetEntryAssembly(); if (entryAssembly != null) { diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs index 9eff208198..0123bf1d0d 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/AbpApplication_Initialize_Tests.cs @@ -1,10 +1,16 @@ -using System.Threading.Tasks; +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using NSubstitute; using Shouldly; using Volo.Abp.DependencyInjection; using Volo.Abp.Modularity; using Volo.Abp.Modularity.PlugIns; using Xunit; +using IConfiguration = Castle.Core.Configuration.IConfiguration; namespace Volo.Abp; @@ -147,8 +153,8 @@ public class AbpApplication_Initialize_Tests [Fact] public void Should_Set_And_Get_ApplicationName() { - const string applicationName = "MyApplication"; - + var applicationName = "MyApplication"; + using (var application = AbpApplicationFactory.Create(options => { options.ApplicationName = applicationName; @@ -156,16 +162,49 @@ public class AbpApplication_Initialize_Tests { application.ApplicationName.ShouldBe(applicationName); application.Services.GetApplicationName().ShouldBe(applicationName); - + application.Initialize(); - + + application.ServiceProvider + .GetRequiredService() + .ApplicationName + .ShouldBe(applicationName); + } + + using (var application = AbpApplicationFactory.Create(options => + { + options.Services.ReplaceConfiguration(new ConfigurationBuilder() + .AddInMemoryCollection(new Dictionary {{"ApplicationName", applicationName}}) + .Build()); + })) + { + + application.ApplicationName.ShouldBe(applicationName); + application.Services.GetApplicationName().ShouldBe(applicationName); + + application.Initialize(); + + application.ServiceProvider + .GetRequiredService() + .ApplicationName + .ShouldBe(applicationName); + } + + applicationName = Assembly.GetEntryAssembly()?.GetName().Name; + using (var application = AbpApplicationFactory.Create()) + { + application.ApplicationName.ShouldBe(applicationName); + application.Services.GetApplicationName().ShouldBe(applicationName); + + application.Initialize(); + application.ServiceProvider .GetRequiredService() .ApplicationName .ShouldBe(applicationName); } } - + [Fact] public async Task Should_Resolve_Root_Service_Provider() {