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

.NET Core中DLL如何访问连接字符串?读取失败问题排查

.NET Core类库无法读取app.config连接字符串的问题解决

问题根源

.NET Core的配置机制和.NET Framework完全不同:类库项目中的app.config不会被自动加载或合并到应用的配置体系中,只有启动项目(也就是你的somethingSite)的配置文件才会被整个应用(包括引用的所有类库)读取。你把连接字符串放在类库的app.config里,DAL自然找不到。

具体解决方案

分两种常见情况处理:

情况1:BAL和DAL是.NET Framework编写的类库(依赖ConfigurationManager)

如果你的BAL/DAL是基于.NET Framework开发的,依然使用ConfigurationManager.ConnectionStrings["con"]读取配置,按以下步骤操作:

  • 移除CommonActivity类库中的app.config文件
  • 在启动项目somethingSite中添加App.config文件(右键项目→添加→新建项→应用程序配置文件)
  • 在App.config中添加连接字符串节点:
<configuration>
  <connectionStrings>
    <add name="con" connectionString="你的数据库连接字符串内容" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>
  • 给启动项目安装NuGet包:Microsoft.Extensions.Configuration.ConfigurationManager,这个包让.NET Core应用可以兼容.NET Framework的ConfigurationManager读取方式

情况2:BAL和DAL是.NET Core/.NET 5+编写的类库(推荐使用依赖注入)

如果是基于.NET Core的类库,推荐使用.NET Core原生的配置系统和依赖注入:

  • 移除CommonActivity类库中的app.config文件
  • 在启动项目somethingSite的appsettings.json中添加连接字符串:
{
  "ConnectionStrings": {
    "con": "你的数据库连接字符串内容"
  }
}
  • 修改DAL中的DataAccessLayer类,通过构造函数注入IConfiguration来读取配置:
public class DataAccessLayer
{
    private readonly IConfiguration _config;

    // 构造函数注入IConfiguration
    public DataAccessLayer(IConfiguration config)
    {
        _config = config;
    }

    public void YourDataMethod()
    {
        // 读取连接字符串
        string connectionString = _config.GetConnectionString("con");
        // 后续数据库操作逻辑
    }
}
  • 确保启动项目的依赖注入容器已注册IConfiguration(ASP.NET Core项目默认已自动注册;控制台项目需要手动构建配置并注册)

关键注意事项

  • 无论哪种情况,所有配置项都应该放在启动项目的配置文件中,类库本身不应该存放独立的配置文件
  • 如果混用.NET Framework和.NET Core组件,必须通过ConfigurationManager兼容包来桥接配置读取逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:40:32