还有其它两种方式这里不细说,配置多环境很明显不是采用显式注册。因此以下测试均采用方式二
public class Startup { public void ConfigureServices(IServiceCollection services) { IConfigurationRoot root = new ConfigurationBuilder().AddJsonFile("appsettings.Production.json").Build(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { } }
public class StartupProduction { public void ConfigureServices(IServiceCollection services) { IConfigurationRoot root = new ConfigurationBuilder().AddJsonFile("appsettings.Production.json").Build(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { } }
结论:很明显是环境变量优先
public class Startup { public void ConfigureServices(IServiceCollection services) { IConfigurationRoot root = new ConfigurationBuilder().AddJsonFile("appsettings.Production.json").Build(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { } }
namespace Other { public class Startup { public void ConfigureServices(IServiceCollection services) { IConfigurationRoot root = new ConfigurationBuilder().AddJsonFile("appsettings.Production.json").Build(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { } } }
namespace AspnetCore { public class Startup { public void ConfigureServices(IServiceCollection services) { IConfigurationRoot root = new ConfigurationBuilder().AddJsonFile("appsettings.Production.json").Build(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { } } }
结论:无命名空间优先在情理之中,可任意命名空间竟然比当前的优先集要高,有些出人意料
其一:多环境配置方式往小的说,还可以有基于配置文件的选择传送门,和基于配置方法的选择两种配置方式
其二:其它两种方式分别是