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

如何在Azure Function独立工作者DI配置中访问User Secrets值

解决方案

要在.NET 7 Azure Function独立工作者的DI配置环节直接访问User Secrets中的值,可按以下步骤操作:

  1. 安装必要NuGet包
    确保项目已安装Microsoft.Extensions.Configuration.UserSecrets包,用于加载User Secrets配置。

  2. 修改Program.cs配置
    在HostBuilder中添加User Secrets配置提供程序,并在ConfigureServices中通过IConfiguration获取密钥:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureAppConfiguration((context, config) =>
    {
        // 仅在开发环境加载User Secrets
        if (context.HostingEnvironment.IsDevelopment())
        {
            // 关联当前项目的User Secrets
            config.AddUserSecrets<Program>();
        }
    })
    .ConfigureServices(services =>
    {
        // 构建临时服务提供者并获取IConfiguration实例
        var config = services.BuildServiceProvider().GetRequiredService<IConfiguration>();
        string apiKey = config["apiKey"] ?? throw new InvalidOperationException("未配置apiKey");

        // 注入依赖项时直接使用获取到的apiKey
        services.AddScoped<IMyDependency>(_ => new MyDependency(apiKey));
    })
    .Build();

host.Run();

关键说明

  • ConfigureAppConfiguration中通过AddUserSecrets<Program>()关联当前项目的User Secrets,确保机密内容被加载到配置系统中。
  • 在ConfigureServices里,通过BuildServiceProvider()获取已配置的IConfiguration实例,从而直接读取apiKey的值。
  • 加入环境判断,仅在开发环境加载User Secrets,避免生产环境误加载。

之前尝试无效的原因

  • Environment.GetEnvironmentVariable无法获取User Secrets的值,因为User Secrets不会自动同步到环境变量,必须通过配置系统访问。
  • 仅添加AddUserSecrets但未通过IConfiguration读取,自然无法获取对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:27:11