Azure Function V1如何使用ConfigurationManager读取settings.json配置值
解决方案
可以实现,以下是两种不需要修改原有.NET Framework类库代码的落地方案:
方案1:新增App.config配置(最稳妥,无额外依赖)
ConfigurationManager为.NET Framework生态的原生配置读取类,默认读取应用根目录的App.config文件中的配置,你可以按如下步骤操作:
- 在Azure Function V1项目的根目录新增
App.config文件,按传统.NET Framework格式填写所有类库需要用到的配置项:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="Key" value="对应的配置值"/> <!-- 其余类库依赖的配置项依次添加即可 --> </appSettings> </configuration>
- 右键选中
App.config文件,将属性中的「复制到输出目录」设置为如果较新则复制。 - 该方案本地调试和云端部署都可直接生效:云端部署时,你在Azure门户的Function应用「配置」页添加的同名应用设置,会自动覆盖
App.config中对应配置项的值,不需要额外修改配置或代码。
方案2:启动时同步环境变量到ConfigurationManager(适合配置项多的场景)
如果你不想同时维护local.settings.json和App.config两份配置,可以在Function启动时将环境变量中的配置同步到ConfigurationManager.AppSettings集合中:
- 首先在项目中安装
Microsoft.Azure.Functions.ExtensionsNuGet包 - 新增项目启动类,代码示例如下:
using Microsoft.Azure.Functions.Extensions.DependencyInjection; using System.Configuration; [assembly: FunctionsStartup(typeof(你的项目命名空间.Startup))] namespace 你的项目命名空间 { public class Startup : FunctionsStartup { public override void Configure(IFunctionsHostBuilder builder) { // 同步所有环境变量配置到AppSettings集合 foreach (string key in ConfigurationManager.AppSettings.AllKeys) { var envValue = Environment.GetEnvironmentVariable(key); if (!string.IsNullOrEmpty(envValue)) { ConfigurationManager.AppSettings[key] = envValue; } } } } }
- 该方案下你只需要把配置项写到
local.settings.json的Values节点下即可,ConfigurationManager.AppSettings可以正常读取到对应值。
内容的提问来源于stack exchange,提问作者ivan0590
相关产品推荐
相关产品推荐

