You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地开发Azure函数时导入共享appsettings.Common.json配置的问题

在本地Azure Functions中共享ASP.NET Core的通用配置文件

别担心,你完全可以实现这个需求——Azure Functions的配置系统并非只能依赖local.settings.json硬编码,它和ASP.NET Core一样支持扩展配置源,下面是具体的实现方案:

针对隔离进程模型(Azure Functions v4+ 推荐)

如果你用的是官方推荐的隔离进程模型,可以在Program.cs中手动添加通用配置文件的加载逻辑:

using System.IO;
using System.Reflection;
using Microsoft.Extensions.Hosting;

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureAppConfiguration((context, config) =>
    {
        // 获取当前函数程序的运行目录,确保能定位到配置文件
        var baseDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        // 加载通用配置文件,optional设为false表示文件必须存在,reloadOnChange支持配置热重载
        config.AddJsonFile(Path.Combine(baseDirectory, "appsettings.Common.json"), 
                           optional: false, 
                           reloadOnChange: true);
    })
    .Build();

host.Run();

配置完成后,你就能像在ASP.NET Core中一样,通过依赖注入IConfiguration来访问appsettings.Common.json里的所有配置项了。

针对进程内模型(旧版兼容)

如果你的Azure Functions仍在使用进程内模型(基于.NET Core 3.1或更早版本),可以在Startup.cs中扩展配置逻辑:

using System.IO;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;

[assembly: FunctionsStartup(typeof(YourFunctionNamespace.Startup))]
namespace YourFunctionNamespace
{
    public class Startup : FunctionsStartup
    {
        public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
        {
            var context = builder.GetContext();
            builder.ConfigurationBuilder
                .AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.Common.json"), 
                           optional: false, 
                           reloadOnChange: true);
        }

        // 其他服务配置逻辑...
    }
}

关键注意事项

  • 文件复制设置:一定要把appsettings.Common.json的「复制到输出目录」属性设置为「如果较新则复制」或「始终复制」,否则函数运行时会找不到这个文件。
  • 配置优先级:local.settings.json中的配置优先级会高于你添加的通用配置文件,如果存在同名配置项,会优先使用local.settings.json里的值,这符合.NET配置系统的叠加规则。
  • 版本兼容性:Azure Functions v3及以上版本都支持这种配置扩展方式,不用担心版本兼容问题。

这样你就能让本地Azure Functions和ASP.NET Core Web应用共享同一个通用配置文件,避免重复维护配置项了。

内容的提问来源于stack exchange,提问作者mangafaua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:26:18