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

.NET Core 2.0应用自定义appsettings.Secure.json未加载问题

如何在.NET Core 2.0中始终加载自定义的appsettings.Secure.json配置文件

没问题,我帮你搞定这个配置加载的需求,直接看下面的实现方案和说明:

核心实现逻辑

.NET Core的配置系统是按加载顺序合并配置的,后面加载的文件会覆盖前面的同名配置项。我们只需要把appsettings.Secure.json的加载步骤固定加入配置流程,就能确保它在任何环境下都被加载。

完整代码示例(Program.cs)

修改你的Program.cs中的配置构建逻辑,添加对appsettings.Secure.json的加载:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                var env = hostingContext.HostingEnvironment;
                
                // 加载基础配置文件
                config.SetBasePath(env.ContentRootPath)
                      // 基础配置,必须存在
                      .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                      // 环境特定配置,可选(比如开发/生产环境的差异配置)
                      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
                      // 关键:添加Secure配置文件,设置为必须存在(optional: false),确保始终加载
                      .AddJsonFile("appsettings.Secure.json", optional: false, reloadOnChange: true)
                      // 加载环境变量(可选,用于覆盖配置)
                      .AddEnvironmentVariables();
            })
            .UseStartup<Startup>()
            .Build();
}

代码说明

  • optional: false:设置为false意味着如果appsettings.Secure.json不存在,应用启动会直接报错,强制确保这个文件被加载;如果你的场景允许文件不存在(比如部分环境不需要),可以改成true,但根据你的需求,建议保持false。
  • 加载顺序:基础配置 → 环境配置 → Secure配置,这样Secure里的敏感配置(比如ClientSecret)会覆盖前面的同名项(如果有的话),同时保留其他配置项(比如来自基础文件的ClientId、环境文件的Random)。

验证配置是否生效

你可以在Startup.cs中注入IConfiguration,验证配置是否正确加载:

public class Startup
{
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // 读取配置项验证
        string clientId = Configuration["AzureAd:ClientId"];       // 来自appsettings.json
        string clientSecret = Configuration["AzureAd:ClientSecret"]; // 来自appsettings.Secure.json
        string randomValue = Configuration["AzureAd:Random"];     // 开发环境下来自appsettings.Development.json
        
        // 这里可以打印日志或者直接使用这些配置
        services.AddMvc();
    }

    // 其他Configure方法逻辑...
}

注意事项

  • 确保appsettings.Secure.json的复制到输出目录属性设置为「始终复制」或「如果较新则复制」,否则应用运行时会找不到该文件。
  • 由于这个文件包含敏感信息(比如ClientSecret),记得把它加入.gitignore,不要提交到代码仓库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:49:35