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

在ASP.NET Core MVC中如何从静态类读取appsettings.json的值?

问题描述

我用Visual Studio 2022创建了全新的ASP.NET Core 8 MVC项目,在appsettings.json中配置了连接字符串:

"ConnectionStrings": {
    "MyDB": "...connecting...details...."
}

目前可以在控制器中通过依赖注入IConfiguration读取该值:

private IConfiguration _AppSettingsConfig; 

public PocController(IConfiguration config)
{
    _AppSettingsConfig = config;
}

调用方式如下:

_AppSettingsConfig.GetConnectionString("MyDB")

或者:

_AppSettingsConfig["ConnectionStrings:MyDB"];

这种方式可行,但我希望用包含静态属性的类封装逻辑,直接返回appsettings.json对应值,代替上述代码:

public class ConfigProps
{
    public static string MyDBConString
    {
        get 
        { 
            return "how do I get from here to the config?";
        }
    }
}

请问是否有实现方法?

实现方法

方法1:通过启动初始化静态类

ASP.NET Core启动阶段可以获取IConfiguration实例,直接给静态类赋值:

  1. 修改ConfigProps类,添加初始化方法和存储字段:
public class ConfigProps
{
    private static string _myDBConString;

    // 供启动时调用初始化
    public static void Initialize(IConfiguration config)
    {
        _myDBConString = config.GetConnectionString("MyDB");
    }

    public static string MyDBConString => _myDBConString;
}
  1. 在Program.cs中完成初始化(构建WebApplication之后):
var builder = WebApplication.CreateBuilder(args);

// ... 其他服务注册代码 ...

var app = builder.Build();

// 初始化静态配置类
ConfigProps.Initialize(app.Configuration);

// ... 中间件配置代码 ...

app.Run();

之后即可在项目任意位置直接调用ConfigProps.MyDBConString获取连接字符串。

方法2:强类型配置(更推荐的规范方案)

虽然你要求静态属性,但ASP.NET Core官方更推荐强类型配置结合依赖注入的方式,相比静态类更灵活、可测试:

  1. 创建强类型配置类:
public class ConnectionStrings
{
    public string MyDB { get; set; } = string.Empty;
}
  1. 在Program.cs中绑定配置:
builder.Services.Configure<ConnectionStrings>(builder.Configuration.GetSection("ConnectionStrings"));
  1. 在控制器或服务中注入使用:
private readonly ConnectionStrings _connectionStrings;

public PocController(IOptions<ConnectionStrings> options)
{
    _connectionStrings = options.Value;
}

// 使用示例
var dbConnection = _connectionStrings.MyDB;

这种方式符合ASP.NET Core设计理念,支持配置重载、绑定验证等特性,更易于维护和扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:25:03