gpt4 book ai didi

appsettings - 在 .net core 3.1 应用程序中使用 AddEnvironmentVariables

转载 作者:行者123 更新时间:2023-12-03 23:35:13 25 4
gpt4 key购买 nike

我已经生成了一个新的网络项目。似乎在 .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>();
});
}

最佳答案

documentation可能是阅读所有可用配置方法的最佳位置。为了回答您的具体问题,您所追求的扩展方法在 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`
;

然而

默认 EnvironmentVariablesConfigurationSource ConfigureWebHostDefaults 已为您注入(inject),因此您最终将拥有两个提供者。

我假设您想注入(inject)自定义配置,因此您可能需要先从列表中删除默认配置:

.ConfigureAppConfiguration(configurationBuilder =>
{
configurationBuilder.Sources.Remove(
configurationBuilder.Sources.First(source =>
source.GetType() == typeof(EnvironmentVariablesConfigurationSource))); //remove the default one first
configurationBuilder.AddEnvironmentVariables();
})

希望这能给你一个进一步探索的起点

关于appsettings - 在 .net core 3.1 应用程序中使用 AddEnvironmentVariables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com