Browse Source

Try to set environment after `ConfigureServices` method executes.

pull/14842/head
maliming 4 years ago
parent
commit
930c1de8b0
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 22
      framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs
  2. 34
      framework/test/Volo.Abp.AspNetCore.Tests/Volo/Abp/AspNetCore/AbpHostEnvironment_Tests.cs

22
framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs

@ -66,15 +66,6 @@ public abstract class AbpApplicationBase : IAbpApplication
{ {
ConfigureServices(); ConfigureServices();
} }
if (options.Environment.IsNullOrWhiteSpace())
{
var abpHostEnvironment = services.GetSingletonInstance<IAbpHostEnvironment>();
if (abpHostEnvironment.EnvironmentName.IsNullOrWhiteSpace())
{
abpHostEnvironment.EnvironmentName = Environments.Production;
}
}
} }
public virtual async Task ShutdownAsync() public virtual async Task ShutdownAsync()
@ -238,6 +229,8 @@ public abstract class AbpApplicationBase : IAbpApplication
} }
_configuredServices = true; _configuredServices = true;
TryToSetEnvironment(Services);
} }
private void CheckMultipleConfigureServices() private void CheckMultipleConfigureServices()
@ -327,6 +320,8 @@ public abstract class AbpApplicationBase : IAbpApplication
} }
_configuredServices = true; _configuredServices = true;
TryToSetEnvironment(Services);
} }
private static string GetApplicationName(AbpApplicationCreationOptions options) private static string GetApplicationName(AbpApplicationCreationOptions options)
@ -354,4 +349,13 @@ public abstract class AbpApplicationBase : IAbpApplication
return null; return null;
} }
private static void TryToSetEnvironment(IServiceCollection services)
{
var abpHostEnvironment = services.GetSingletonInstance<IAbpHostEnvironment>();
if (abpHostEnvironment.EnvironmentName.IsNullOrWhiteSpace())
{
abpHostEnvironment.EnvironmentName = Environments.Production;
}
}
} }

34
framework/test/Volo.Abp.AspNetCore.Tests/Volo/Abp/AspNetCore/AbpHostEnvironment_Tests.cs

@ -1,5 +1,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration.Memory; using Microsoft.Extensions.Configuration.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Shouldly; using Shouldly;
using Xunit; using Xunit;
@ -29,3 +32,34 @@ public class AbpHostEnvironment_Tests : AbpAspNetCoreTestBase<Startup>
abpHostEnvironment.EnvironmentName.ShouldBe(Environments.Staging); abpHostEnvironment.EnvironmentName.ShouldBe(Environments.Staging);
} }
} }
public class AbpHostEnvironment_Async_Initialize_Tests
{
[Fact]
public async Task Should_Set_Environment_From_AspNetCore()
{
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
EnvironmentName = Environments.Staging
});
builder.Host.UseAutofac();
await builder.AddApplicationAsync<AbpAspNetCoreTestModule>();
var app = builder.Build();
await app.InitializeApplicationAsync();
var abpHostEnvironment = app.Services.GetRequiredService<IAbpHostEnvironment>();
abpHostEnvironment.EnvironmentName.ShouldBe(Environments.Staging);
builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
EnvironmentName = Environments.Staging
});
builder.Host.UseAutofac();
var abpApp = await AbpApplicationFactory.CreateAsync<AbpAspNetCoreTestModule>(builder.Services);
app = builder.Build();
await app.InitializeApplicationAsync();
abpHostEnvironment = abpApp.Services.GetRequiredService<IAbpHostEnvironment>();
abpHostEnvironment.EnvironmentName.ShouldBe(Environments.Staging);
}
}

Loading…
Cancel
Save