如何在ASP.NET Core 6.0 Web API中读取Azure App Service应用设置
.NET Core 6.0 Azure App Service读取应用设置的最简方案
问题根源
你当前代码里提前构建了ServiceProvider并获取IConfiguration,此时配置还没完成全部加载(包括Azure App Service的应用设置);同时在ConfigureAppConfiguration里错误使用了未更新的configuration变量,这才导致部署后读不到值。
最简读取方式
.NET Core默认会自动加载Azure App Service的应用设置,不需要额外配置,直接用builder.Configuration就能读取,或者在需要的地方依赖注入IConfiguration即可。
修正后的Program.cs代码
using HelloWorldApi.Helpers; using Microsoft.AspNetCore.Authentication.Certificate; using Microsoft.AspNetCore.Server.Kestrel.Https; var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); // 方式1:直接用builder.Configuration读取,最简写法 var mykey = builder.Configuration["mykey"]; // 或者强类型读取 var mykeyValue = builder.Configuration.GetValue<string>("mykey"); builder.WebHost.ConfigureKestrel(o => { o.ConfigureHttpsDefaults(o => { // 如果要在Kestrel配置里读取,同样用builder.Configuration // var key = builder.Configuration["mykey"]; }); }); var app = builder.Build(); // 如果构建完app后需要读取,也可以从服务容器获取IConfiguration var config = app.Services.GetRequiredService<IConfiguration>(); var postBuildMykey = config["mykey"]; // 后续中间件配置 app.MapControllers(); app.Run();
注意事项
- 部署到Azure后,确认「配置」->「应用设置」里的
mykey已正确添加,Azure的应用设置优先级高于本地配置文件,不会被覆盖。 - 别提前调用
BuildServiceProvider,这会导致配置未完全加载,还可能引发服务生命周期问题。
内容的提问来源于stack exchange,提问作者F11
相关产品推荐
相关产品推荐

