Browse Source

Resolved #545: User secrets integration for the aspnet core module

pull/556/head
Halil ibrahim Kalkan 8 years ago
parent
commit
a928538f71
  1. 21
      framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Hosting/AbpHostingEnvironmentExtensions.cs
  2. 24
      framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/Configuration/AbpAspNetCoreConfigurationOptions.cs
  3. 10
      framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs
  4. 3
      framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj
  5. 6
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs
  6. 2
      framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionConfigurationExtensions.cs
  7. 2
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/Configuration/ConfigurationAccessor_Tests.cs

21
framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/Hosting/AbpHostingEnvironmentExtensions.cs

@ -4,12 +4,27 @@ namespace Microsoft.AspNetCore.Hosting
{
public static class AbpHostingEnvironmentExtensions
{
public static IConfigurationRoot BuildConfiguration(this IHostingEnvironment env, string fileName = "appsettings")
public static IConfigurationRoot BuildConfiguration(this IHostingEnvironment env, AbpAspNetCoreConfigurationOptions options = null)
{
options = options ?? new AbpAspNetCoreConfigurationOptions();
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile(fileName + ".json", optional: true, reloadOnChange: true)
.AddJsonFile($"{fileName}.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
.AddJsonFile(options.FileName + ".json", optional: true, reloadOnChange: true)
.AddJsonFile($"{options.FileName}.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
if (env.IsDevelopment())
{
if (options.UserSecretsId != null)
{
builder.AddUserSecrets(options.UserSecretsId);
}
else if (options.UserSecretsAssembly != null)
{
builder.AddUserSecrets(options.UserSecretsAssembly, true);
}
}
return builder.Build();
}

24
framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/Configuration/AbpAspNetCoreConfigurationOptions.cs

@ -0,0 +1,24 @@
using System.Reflection;
namespace Microsoft.Extensions.Configuration
{
public class AbpAspNetCoreConfigurationOptions
{
/// <summary>
/// Used to set assembly which is used to get the user secret id for the application.
/// Use this or <see cref="UserSecretsId"/> (higher priority)
/// </summary>
public Assembly UserSecretsAssembly { get; set; }
/// <summary>
/// Used to set user secret id for the application.
/// Use this (higher priority) or <see cref="UserSecretsAssembly"/>
/// </summary>
public string UserSecretsId { get; set; }
/// <summary>
/// Default value: "appsettings".
/// </summary>
public string FileName { get; set; } = "appsettings";
}
}

10
framework/src/Volo.Abp.AspNetCore/Microsoft/Extensions/DependencyInjection/AbpAspNetCoreServiceCollectionExtensions.cs

@ -10,15 +10,15 @@ namespace Microsoft.Extensions.DependencyInjection
return services.GetSingletonInstance<IHostingEnvironment>();
}
public static IConfigurationRoot BuildConfiguration(this IServiceCollection services, string fileName = "appsettings")
public static IConfigurationRoot BuildConfiguration(this IServiceCollection services, AbpAspNetCoreConfigurationOptions options = null)
{
return services.GetHostingEnvironment().BuildConfiguration(fileName);
return services.GetHostingEnvironment().BuildConfiguration(options);
}
public static IConfigurationRoot AddConfiguration(this IServiceCollection services, string fileName = "appsettings")
public static IConfigurationRoot AddConfiguration(this IServiceCollection services, AbpAspNetCoreConfigurationOptions options = null)
{
var configuration = services.BuildConfiguration(fileName);
services.AddConfiguration(configuration);
var configuration = services.BuildConfiguration(options);
services.SetConfiguration(configuration);
return configuration;
}
}

3
framework/src/Volo.Abp.AspNetCore/Volo.Abp.AspNetCore.csproj

@ -30,7 +30,8 @@
<PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Routing.Abstractions" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Http" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="2.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Localization" Version="2.1.0" />
</ItemGroup>

6
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Auditing;
using Volo.Abp.Auditing;
@ -38,7 +39,10 @@ namespace Volo.Abp.AspNetCore
AddAspNetServices(context.Services);
context.Services.AddObjectAccessor<IApplicationBuilder>();
context.Services.AddConfiguration();
context.Services.AddConfiguration(
context.Services.ExecutePreConfiguredActions<AbpAspNetCoreConfigurationOptions>()
);
}
private static void AddAspNetServices(IServiceCollection services)

2
framework/src/Volo.Abp.Core/Microsoft/Extensions/DependencyInjection/ServiceCollectionConfigurationExtensions.cs

@ -6,7 +6,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionConfigurationExtensions
{
public static IServiceCollection AddConfiguration(this IServiceCollection services, IConfigurationRoot configurationRoot)
public static IServiceCollection SetConfiguration(this IServiceCollection services, IConfigurationRoot configurationRoot)
{
return services.Replace(ServiceDescriptor.Singleton<IConfigurationAccessor>(new DefaultConfigurationAccessor(configurationRoot)));
}

2
framework/test/Volo.Abp.Core.Tests/Volo/Abp/Configuration/ConfigurationAccessor_Tests.cs

@ -30,7 +30,7 @@ namespace Volo.Abp.Configuration
using (var application = AbpApplicationFactory.Create<IndependentEmptyModule>())
{
var myConfiguration = new ConfigurationBuilder().Build();
application.Services.AddConfiguration(myConfiguration);
application.Services.SetConfiguration(myConfiguration);
application.Services.GetConfiguration().ShouldBe(myConfiguration);
application.Initialize();

Loading…
Cancel
Save