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

读取appsettings.json配置节点报CS0120错误的解决方法

错误原因

CS0120错误的核心触发原因是:你在代码中调用Configuration.GetSection()时,当前作用域内不存在名为Configuration的可用对象实例,编译器会尝试查找静态的Configuration成员,找不到匹配签名的实现就会抛出该错误。

这个问题几乎都是.NET版本写法差异导致的:.NET 5及更早版本的项目通常使用Startup类完成服务注册,Configuration是Startup类通过构造函数注入得到的实例属性,在类内部方法中可以直接调用;但.NET 6及之后的默认项目模板改用顶级语句编写Program.cs,不存在全局静态的Configuration对象,直接裸写Configuration自然会触发编译错误。

修复方案

将服务注册代码中的Configuration替换为WebApplicationBuilder实例(即你代码中已经定义的builder对象)上挂载的Configuration属性即可,修正后的代码如下:

builder.Services.Configure<MailSettings>(builder.Configuration.GetSection("MailSettings"));

修复后即可正常编译,服务注册完成后,你可以在控制器、自定义服务类中通过IOptions<MailSettings>注入,获取绑定完成的强类型配置实例。

配置绑定校验

要保证配置值能正确映射到MailSettings类,需要确认appsettings.json中存在层级、名称匹配的MailSettings节点,参考结构如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "MailSettings": {
    "Mail": "noreply@yourdomain.com",
    "DisplayName": "系统通知",
    "Password": "your_email_smtp_password",
    "Host": "smtp.yourdomain.com",
    "Port": 465
  },
  "AllowedHosts": "*"
}

配置绑定默认不区分大小写,但节点名、属性名拼写要保持一致,否则会出现对应属性绑定为空值的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:09:38