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

含传统类库与.NET Core 2 MVC的解决方案中web.config连接字符串失效

解决.NET Core 2 MVC中数据访问层读取连接字符串的问题

这个问题的核心是你在.NET Core项目中沿用了.NET Framework时代的ConfigurationManager配置读取方式,而.NET Core有一套全新的配置系统,和老机制不兼容,同时类库也需要适配新的配置方式。下面是具体的解决步骤:

1. 放弃ConfigurationManager,改用.NET Core配置系统

首先,你需要移除数据访问层中对System.Configuration.ConfigurationManager的依赖,这是.NET Framework专属的API,在.NET Core中不仅适配性差,还违背了.NET Core的配置设计理念。

2. 给数据访问层类库安装必要的NuGet包

在数据访问层类库的NuGet包管理器中安装以下包:

  • Microsoft.Extensions.Configuration:提供.NET Core配置系统的核心抽象
  • Microsoft.Extensions.Configuration.Json:用于读取JSON格式的配置文件

3. 调整数据访问层获取连接字符串的代码

推荐使用依赖注入的方式来获取配置,这是.NET Core的最佳实践,既灵活又便于测试和维护:

方式一:依赖注入IConfiguration

修改你的数据访问类,通过构造函数注入IConfiguration:

using Microsoft.Extensions.Configuration;

public class YourDataAccessClass
{
    private readonly string _connectionString;

    // 通过构造函数注入配置对象
    public YourDataAccessClass(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("DefaultConn");
    }

    // 后续使用_connectionString执行数据库操作
}

然后在MVC项目的Startup.cs的ConfigureServices方法中注册你的数据访问类:

services.AddScoped<YourDataAccessClass>();

.NET Core会自动将主项目加载的所有配置(包括appsettings.json)注入到类中。

方式二:手动构建配置对象(仅用于特殊场景)

如果不想用依赖注入,也可以手动构建配置对象读取appsettings.json,但要注意类库的运行目录是主MVC项目的输出目录:

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

public class YourDataAccessClass
{
    private readonly string _connectionString;

    public YourDataAccessClass()
    {
        var configBuilder = new ConfigurationBuilder()
            // 设置基目录为主项目的输出目录
            .SetBasePath(Directory.GetCurrentDirectory())
            // 加载appsettings.json,设置为必填且支持热重载
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

        IConfiguration config = configBuilder.Build();
        _connectionString = config.GetConnectionString("DefaultConn");
    }
}

4. 确保appsettings.json的复制属性正确设置

右键MVC项目中的appsettings.json文件,选择「属性」,将复制到输出目录设置为如果较新则复制或始终复制,避免运行时找不到配置文件。

为什么之前的尝试无效?

  • 用web.config的方式:.NET Core中web.config主要用于IIS相关配置,不再是应用配置的主要载体,ConfigurationManager无法正确解析.NET Core项目的web.config结构。
  • 直接用appsettings.json但无效:数据访问层类库不会自动加载主项目的配置文件,必须通过依赖注入或手动构建配置对象的方式主动读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:58:28