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

ASP.NET Core 3.1中ConfigurationManager读取Web.Config连接字符串返回null

问题根因

ASP.NET Core 3.1 不采用传统.NET Framework的Web.config作为默认配置载体,你安装的6.0版本System.Configuration兼容包,默认读取的配置文件是程序运行目录下与入口程序集同名的[入口程序集名].dll.config文件,不会主动识别项目中手动添加的Web.config。
同时你手动添加的Web.config默认不会被SDK复制到输出目录,也不会被重命名为兼容包可识别的文件名,因此ConfigurationManager.ConnectionStrings["Test"]找不到对应配置节点,返回null触发空引用异常。

解决方案

你可以根据自己的代码场景二选一:

方案1:兼容旧代码,继续使用ConfigurationManager API

  • 把项目根目录下的Web.config重命名为App.config,保留原有配置内容不变:
<configuration>
    <connectionStrings>
        <add name="Test" connectionString="MyConnString"/>
    </connectionStrings>
</configuration>
  • 右键App.config打开属性面板,将「复制到输出目录」设置为如果较新则复制,也可以直接在.csproj项目文件中添加如下配置实现同样效果:
<ItemGroup>
  <None Update="App.config">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>
  • 重新生成项目即可。编译时SDK会自动将App.config转换为兼容包可识别的[程序集名].dll.config输出到运行目录,原有读取代码不需要修改就能正常获取连接字符串。

方案2:使用ASP.NET Core原生配置体系(官方推荐)

这种方式不需要依赖兼容包,是ASP.NET Core的标准用法,稳定性更好:

  • 移除你手动添加的Web.config和安装的System.Configuration相关兼容包,直接在项目默认的appsettings.json中添加连接字符串配置:
{
  "ConnectionStrings": {
    "Test": "MyConnString"
  }
}
  • 放弃使用ConfigurationManager,通过依赖注入获取IConfiguration实例读取配置:
// 可在Controller、服务类、Startup/Program.cs中通过依赖注入拿到IConfiguration实例
string connectionString = configuration.GetConnectionString("Test");

ASP.NET Core启动时会自动加载appsettings.json的内容,不需要手动配置文件复制规则,不会出现找不到配置的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:21:33