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

如何无需依赖注入,像访问web.config一样读取appsettings.json的值?

.NET Core中无需依赖注入读取appsettings.json的方法

有,虽然.NET Core官方更推荐依赖注入的方式管理配置,但确实存在类似ASP.NET里ConfigurationManager的静态方式来读取appsettings.json的值,适合简单场景或迁移旧代码时使用。

具体实现方式

可以手动构建IConfiguration对象,无需依赖注入容器:

using Microsoft.Extensions.Configuration;
using System.IO;

public static class AppConfig
{
    private static readonly IConfiguration _config;

    static AppConfig()
    {
        // 构建配置对象,加载appsettings.json
        _config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .Build();
    }

    // 读取字符串类型配置
    public static string GetString(string key)
    {
        return _config[key];
    }

    // 读取强类型配置
    public static T Get<T>(string key)
    {
        return _config.GetValue<T>(key);
    }

    // 读取嵌套配置(比如连接字符串)
    public static string GetConnectionString(string name)
    {
        return _config.GetConnectionString(name);
    }
}

使用示例

// 读取普通配置项
var appName = AppConfig.GetString("AppName");

// 读取数字类型
var maxRetryCount = AppConfig.Get<int>("RetrySettings:MaxCount");

// 读取连接字符串
var dbConn = AppConfig.GetConnectionString("DefaultConnection");

注意事项

  • 必须确保项目安装了Microsoft.Extensions.Configuration.Json NuGet包,否则无法加载JSON配置文件
  • 非Web项目(比如控制台应用)要注意Directory.GetCurrentDirectory()的路径,确保能定位到appsettings.json文件(可以手动指定绝对路径,或者设置文件的“复制到输出目录”属性为“始终复制”)
  • 这种静态方式虽然便捷,但违背了.NET Core的依赖注入设计原则,不利于单元测试和解耦,大型项目仍建议使用依赖注入方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:01:01