Sex*_*yMF 5 appsettings .net-core-3.1
我生成了一个新的网络项目。似乎在 .net core 3.1 中生成了 appSettings.jsons 并且工作正常。问题是它们是由运行时加载和控制的,而不是我。所以我不能调用AddEnvironmentVariables
AddEnvironmentVariables在这种情况下打电话的正确地点在哪里?
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
}
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Run Code Online (Sandbox Code Playgroud)
tim*_*mur 10
该文档可能是阅读所有可用配置方法的最佳位置。要回答您的特定问题,您所追求的扩展方法是在 上定义的IConfigurationBuilder,因此必须在构建主机之前调用它,如下所示:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureAppConfiguration(configurationBuilder => { configurationBuilder.AddEnvironmentVariables(); }) // here's where you add another `EnvironmentVariablesConfigurationSource`
;
Run Code Online (Sandbox Code Playgroud)
EnvironmentVariablesConfigurationSource已经为您注入了默认值ConfigureWebHostDefaults,因此您最终将拥有两个提供程序。
我假设您想注入自定义配置,因此您可能需要先从列表中删除默认配置:
.ConfigureAppConfiguration(configurationBuilder =>
{
configurationBuilder.Sources.Remove(
configurationBuilder.Sources.First(source =>
source.GetType() == typeof(EnvironmentVariablesConfigurationSource))); //remove the default one first
configurationBuilder.AddEnvironmentVariables();
})
Run Code Online (Sandbox Code Playgroud)
希望这能给你一个进一步探索的起点
| 归档时间: |
|
| 查看次数: |
8479 次 |
| 最近记录: |