gpt4 book ai didi

c# - Azure webjobs 不会使用 Azure 应用程序设置覆盖 appsettings.json

转载 作者:行者123 更新时间:2023-11-30 15:51:48 25 4
gpt4 key购买 nike

我有一个 Azure 网络作业 (.NET Core 2.2),它在启动时从配置中读取一些设置,如下所示:

var builder = new HostBuilder()
.UseEnvironment(Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"))
.ConfigureWebJobs()
.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddEnvironmentVariables();
configApp.AddJsonFile("appsettings.json", optional: false);
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConsole();

var instrumentationKey = hostingContext.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
Console.Writeline(instrumentationKey); // <- this always outputs key from appsettings.json, not from Azure Settings
logging.AddApplicationInsights(instrumentationKey);
}
})
.UseConsoleLifetime();

如您所见,appsettings.json 文件应该有一个 APPINSIGHTS_INSTRUMENTATIONKEY 键,并且它在开发环境中可以正常读取。

现在,对于生产,我想覆盖此 APPINSIGHTS_INSTRUMENTATIONKEY key ,方法是在 Azure 应用程序设置 Web 界面中添加具有相同 key 的设置。

但是,当我将网络作业部署到 Azure 时,它​​仍然具有来自 appsettings.json 的旧应用洞察 key 。为了强制我的 webjob 具有来自 Azure 应用程序设置的覆盖 key ,我必须从 appsettings.json 中删除应用洞察 key 。

有没有一种方法可以让我的网络作业使用 Azure 应用程序设置而不必从 appsettings.json 中删除 key ?

最佳答案

问题是 Azure 应用程序设置是通过环境变量发送的;并且,您首先加载环境变量,然后使用 appsettings.json 覆盖:

.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddEnvironmentVariables();
configApp.AddJsonFile("appsettings.json", optional: false);
})

将此反转为

.ConfigureAppConfiguration((hostContext, configApp) =>
{
configApp.AddJsonFile("appsettings.json", optional: false);
configApp.AddEnvironmentVariables();
})

它会先加载你的 appsettings.json,然后用环境变量覆盖。

关于c# - Azure webjobs 不会使用 Azure 应用程序设置覆盖 appsettings.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56045191/

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