使用Microsoft.Data.SqlClient时log4Net无法加载System.Data.SqlClient.SqlConnection怎么办?
解决ASP.NET Core 10.0中log4net SQL Appender加载连接类型失败的问题
问题原因
在.NET Core环境中,System.Data.SqlClient已被弃用并迁移到Microsoft.Data.SqlClient NuGet包,而你的log4net配置仍在引用旧的连接类型,导致程序无法找到对应的程序集。.NET Framework 4.8中System.Data.SqlClient是框架内置组件,因此不会出现此问题。
解决方案
1. 修改log4net配置文件中的连接类型
找到log4net配置里的<AdoNetAppender>节点下的<connectionType>,将旧的类型声明替换为Microsoft.Data.SqlClient的类型:
原错误配置:
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
修改后正确配置:
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=7.0.1.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5" />
注:版本号可根据你安装的
Microsoft.Data.SqlClient版本调整,也可简化为不指定版本的写法:<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient" />
2. 验证SQL命令配置兼容性
确保<commandText>中的SQL语句使用@参数名的格式(和旧用法一致,通常无需修改),示例:
<commandText value="INSERT INTO Log (Date, Level, Message) VALUES (@Date, @Level, @Message)" />
3. 清理不必要的绑定重定向配置
如果项目中app.config或web.config存在针对System.Data.SqlClient的<bindingRedirect>节点,请直接删除,.NET Core不需要此类配置。
额外检查
- 确认项目已正确安装
Microsoft.Data.SqlClient7.0.1包,可通过NuGet包管理器验证。 - 重启应用后测试日志写入是否正常。
内容的提问来源于stack exchange,提问作者Jim R
相关产品推荐
相关产品推荐

