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

如何从同一解决方案其他项目的静态类中获取ConnectionString?

问题根因

ConfigurationManager.ConnectionStrings 是 .NET Framework 时代的遗留API,默认仅读取 App.config/Web.config 中的 <connectionStrings> 节点,无法直接读取 appsettings.json 中的配置,这是获取失败的核心原因。

可行解决方案

1. 安装必要依赖

在静态类所在项目、解决方案的启动项目中安装对应NuGet包(ASP.NET Core项目默认已内置,无需重复安装):

  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.Json

2. 配置文件设置

  • 右键启动项目中的 appsettings.json,选择「属性」,将「复制到输出目录」修改为「如果较新则复制」,确保运行时可以读取到配置文件。
  • 确保appsettings.json中的连接字符串格式符合规范,示例如下:
{
  "ConnectionStrings": {
    "DefaultConnection": "你的实际数据库连接字符串"
  }
}

3. 修改静态类实现

不要在静态字段初始化阶段读取配置,改为显式初始化逻辑,避免配置未加载完成导致空值:

public static class SystemConstants
{
    // 改为带私有set的属性,仅初始化阶段可赋值
    public static string ConnectionString { get; private set; }

    // 新增初始化方法,程序启动时统一调用
    public static void Init(IConfiguration configuration)
    {
        ConnectionString = configuration.GetConnectionString("DefaultConnection");
    }
}

4. 启动时初始化静态类

在程序启动入口调用初始化方法完成配置注入:

  • 若为ASP.NET Core项目,在Program.cs中添加逻辑:
var builder = WebApplication.CreateBuilder(args);
// 配置加载完成后调用静态类初始化
SystemConstants.Init(builder.Configuration);
// 后续原有业务逻辑保持不变
  • 若为控制台/桌面类项目,在启动入口先加载配置再初始化:
// 加载appsettings.json配置
var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();
// 初始化静态类
SystemConstants.Init(config);

5. 跨项目调用

其他项目引用静态类所在的类库后,直接访问SystemConstants.ConnectionString即可获取连接字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 00:45:04