Dotnet Core隔离进程Azure Function v3如何按环境加载appsettings.json
.NET Core隔离进程Azure Functions v3 按环境加载配置文件实现方案
直接在ConfigureAppConfiguration委托中实现环境配置加载逻辑即可,完整代码如下:
public static async Task Main() { var host = new HostBuilder() .ConfigureAppConfiguration((hostBuilderContext, configuration) => { // 获取当前运行环境名称,默认读取AZURE_FUNCTIONS_ENVIRONMENT环境变量的值 var env = hostBuilderContext.HostingEnvironment; // 配置文件存放根目录,若配置文件直接放在项目根目录可直接使用Directory.GetCurrentDirectory() var configRootPath = Directory.GetCurrentDirectory(); // 可选:加载通用基础配置 configuration.AddJsonFile(Path.Combine(configRootPath, "appsettings.json"), optional: true, reloadOnChange: false) // 按环境加载对应配置文件,自动适配Staging/Production等环境 .AddJsonFile(Path.Combine(configRootPath, $"{env.EnvironmentName.ToLower()}.settings.json"), optional: true, reloadOnChange: false) // 保留本地开发环境默认加载local.settings.json的逻辑,本地优先级最高 .AddJsonFile("local.settings.json", optional: true, reloadOnChange: false) // 最后加载环境变量、命令行参数,保证Azure门户配置的应用设置优先级最高 .AddEnvironmentVariables() .AddCommandLine(Environment.GetCommandLineArgs()); }) .ConfigureFunctionsWorkerDefaults((hostBuilder, worker) => { // 自定义中间件注册逻辑 }) .ConfigureServices((context, services) => { services.RegisterLogger(); // 其他服务注册,可直接通过context.Configuration读取已加载的配置 }) .Build(); await host.RunAsync(); }
必要注意项
- 所有自定义配置文件(如
staging.settings.json、production.settings.json)需要在文件属性中将「复制到输出目录」设置为始终复制,避免部署后文件丢失 - 配置加载优先级按代码添加顺序从低到高,同配置项后续加载的会覆盖前面的,可根据自身需求调整加载顺序
- 本地开发时
AZURE_FUNCTIONS_ENVIRONMENT默认值为Development,自动适配本地配置加载逻辑 - 部署到Azure后,只需在对应部署槽的「配置」-「应用程序设置」中添加
AZURE_FUNCTIONS_ENVIRONMENT,值设为Staging/Production即可自动加载对应环境配置
内容的提问来源于stack exchange,提问作者kkdeveloper7
相关产品推荐
相关产品推荐

