将项目从.NET Standard2.0升级到.NET6.0后抛出ConfigurationErrorsException
.NET 6升级后ConfigurationErrorsException异常解决指南
异常原因
你的App.config仍保留大量.NET Framework专属配置节点,这些在.NET 6中完全不兼容,是触发System.Configuration.ConfigurationErrorsException的直接原因——尤其是<system.web>下的身份验证/角色管理节点,以及<startup>中的.NET Framework运行时配置。
.NET 6配置文件的核心变化
.NET 6属于.NET Core生态,和.NET Framework的配置体系差异很大:
- 不再支持
<system.web>、<startup>这类仅.NET Framework有效的节点 - 官方推荐用appsettings.json作为配置文件,通过依赖注入的
IConfiguration读取配置 - 若坚持用App.config,仅能保留
<appSettings>节点,且需适配读取方式
具体修复步骤
1. 清理App.config无效内容
删除所有.NET Framework专属节点,修改后内容如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="PathEmployeeDefaults" value="./EmployeeDefaults.json" /> </appSettings> </configuration>
- 移除
<startup>:.NET 6会自动识别运行时版本,无需手动指定 - 移除
<system.web>:System.Web.ClientServices相关组件在.NET 6中已被彻底移除,无法继续使用
2. 适配配置读取逻辑
若继续用App.config读取
之前用ConfigurationManager.AppSettings的代码,需要安装对应NuGet包:
dotnet add package System.Configuration.ConfigurationManager
推荐改用.NET Core原生配置系统
- 添加
appsettings.json文件,右键设置其“复制到输出目录”为“如果较新则复制” - 在
Program.cs中直接通过注入的配置对象读取:
var builder = WebApplication.CreateBuilder(args); // 默认已加载appsettings.json var employeeDefaultsPath = builder.Configuration["PathEmployeeDefaults"];
3. 替换淘汰的身份验证组件
原配置中的ClientFormsAuthenticationMembershipProvider和ClientRoleProvider是.NET Framework专属的客户端服务组件,.NET 6没有对应替代,需要重新实现身份验证逻辑:
- 可以使用ASP.NET Core Identity框架
- 或者基于JWT自定义身份验证方案
关于configSections的说明
在.NET 6的App.config中,不需要额外添加configSections——仅保留的<appSettings>是默认支持的配置节,无需手动声明配置节信息。
内容的提问来源于stack exchange,提问作者Astro
相关产品推荐
相关产品推荐

