从App.Config获取连接字符串在.NET 5.0报ConfigurationErrorsException错误如何解决
问题原因
.NET 5+ 已重构配置系统,不再默认兼容 .NET Framework 中 App.config 的所有原生配置节,你遇到的两个报错核心原因如下:
- 旧版 App.config 里的
<system.diagnostics>配置节没有对应的注册声明,.NET 5 的 ConfigurationManager 无法识别该节点 - .NET 5 未内置 ConfigurationManager 相关组件,项目缺少对应依赖包
解决步骤
- 第一步:安装 System.Configuration.ConfigurationManager NuGet 包
你需要先安装兼容包才能沿用旧的配置读取逻辑,可直接在 NuGet 包管理器搜索安装,也可通过包管理控制台执行命令:Install-Package System.Configuration.ConfigurationManager - 第二步:处理 App.config 中的 system.diagnostics 节点
如果你不需要使用 .NET Framework 时代的 My.Application.Log 日志功能,直接删除整个<system.diagnostics>节点即可,这是最快的解决方案,能直接解决「Unrecognized configuration section system.diagnostics」报错。
如果你需要保留该节点,就在空的<configSections>标签内添加节点注册声明:<section name="system.diagnostics" type="System.Diagnostics.DiagnosticsConfigurationHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> - 第三步:验证配置读取逻辑
完成前两步操作后,你原来的连接字符串读取代码无需修改即可正常运行。
可选适配方案
如果可以适配 .NET 5 的新配置体系,更推荐使用 appsettings.json 存储配置,扩展性和性能更优:
- 在项目根目录新建
appsettings.json文件,将文件属性设置为「如果较新则复制」到输出目录,文件内容示例:
{ "ConnectionStrings": { "ConnString": "server=0.0.0.0;userid=rice;password=password;database=db;" } }
- 安装
Microsoft.Extensions.Configuration.JsonNuGet 包,对应的读取代码示例:
Dim config As IConfiguration = New ConfigurationBuilder() _ .AddJsonFile("appsettings.json") _ .Build() Dim connStr As String = config.GetConnectionString("ConnString") Public Shared Connection As New MySqlConnection(connStr)
内容的提问来源于stack exchange,提问作者SupBe
相关产品推荐
相关产品推荐

