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

ASP.NET如何在Program.cs中从appsettings获取完整配置对象?

解决在Program.cs中完整获取配置对象的问题

问题原因

你当前的错误在于:

  1. 使用builder.Configuration.Get<Models.AppSettings>()时,默认从配置根节点开始绑定,但你的配置嵌套在Settings节点下,根节点没有匹配AppSettings模型的属性,导致绑定失败。
  2. 使用GetValue<Models.AppSettings>("Settings")是错误用法,GetValue仅适用于获取单个简单类型的值(如字符串、布尔值),无法绑定复杂对象。

正确解决方案

方案1:直接绑定到指定配置节点

通过GetSection("Settings")定位到目标节点后,再调用Get<T>()完成对象绑定:

var builder = WebApplication.CreateBuilder(args);
// 定位到Settings节点并绑定到AppSettings对象
var appSettings = builder.Configuration.GetSection("Settings").Get<Models.AppSettings>();
// 此时appSettings会正确包含UseMemory和Cors的配置值

方案2:通过服务容器获取已注册的配置

如果你已经通过builder.Services.Configure<Models.AppSettings>()将配置注册到依赖注入容器,可在构建应用后从容器中获取:

var builder = WebApplication.CreateBuilder(args);
var appSettingsSection = builder.Configuration.GetRequiredSection("Settings");
builder.Services.Configure<Models.AppSettings>(appSettingsSection);

// 构建WebApplication实例,完成服务容器初始化
var app = builder.Build();

// 从服务容器中获取配置实例
var settings = app.Services.GetRequiredService<IOptions<Models.AppSettings>>().Value;

注意事项

你的CorsSettings类使用了required关键字,需确保appsettings.json中Cors节点下的Origins、Headers、Methods字段都有有效值,否则绑定过程会抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:23:16