我正在尝试找到一种将基于环境的appsettings.json文件加载到 Azure Function 中的方法。
在本地工作时,local.settings.json默认情况下会加载。但是,如果我想部署到其他环境中,STAGING我想加载staging.settings.json. 我浏览了Azure Function文档,发现我需要设置AZURE_FUNCTIONS_ENVIRONMENT变量(此处提到:https: //learn.microsoft.com/en-us/azure/azure-functions/functions-app-settings#azure_functions_environment)。
一旦我设置了这个环境,我该如何staging.settings.json在代码中加载它呢?
我正在将 Azure Function Version 3 与 dotnet core 一起使用。
这是我当前未完成的示例
public static async Task Main()
{
var host = new HostBuilder()
.ConfigureAppConfiguration((hostBuilder, configuration) =>
{
// Do I Load Json File per environment here?
})
.ConfigureFunctionsWorkerDefaults((hostBuilder, worker) =>
{
//Will be regestering custom middleware here
}) //configure middleware here
.ConfigureServices((context, services) => // configure services for DI
{
services.RegisterLogger();
})
.Build();
await host.RunAsync();
}
Run Code Online (Sandbox Code Playgroud)
您可以像这样在块json内加载文件:ConfigureAppConfiguration()
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureAppConfiguration(builder =>
{
builder.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true);
var config = builder.Build();
};
Run Code Online (Sandbox Code Playgroud)
但是,如果您要部署到 Azure 功能,它们有自己的配置部分,您可以在其中指定您的设置并将其设置为特定于插槽(这意味着您可以为暂存和生产设置不同的设置)。在这种情况下,您所需要做的就是将其添加到构建器中,它应该从该配置页面中提取设置:
builder.AddEnvironmentVariables()
所以你最终会得到这样的结果:
builder
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
Run Code Online (Sandbox Code Playgroud)
然后,这将在本地与开发人员和 Azure 中一起使用。您应该避免复制这些 json 文件,并选择使用诸如 Azure 应用程序配置之类的文件(如果可以的话),因为从长远来看,这将使您的生活更轻松。
| 归档时间: |
|
| 查看次数: |
5403 次 |
| 最近记录: |