在使用Microsoft.Data.SqlClient时,Log4Net无法加载System.Data.SqlClient.SqlConnection

编程语言 2026-07-09

我有一个ASP.NET Core 10.0的 Web API。我使用log4net 3.3.1,并搭配SQL Appender。我已经引用 Microsoft.Data.SqlClient 7.0.1。

在运行应用程序时,出现如下错误:

log4net: 错误 [AdoNetAppender] 错误代码: GenericFailure.无法加载连接类型 [System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]

System.IO.FileNotFoundException: 无法加载文件或程序集 'System.Data.SqlClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。 系统找不到指定的文件。

文件名: 'System.Data.SqlClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

在.NET 4.8运行时我没有遇到这个问题。由于旧库已被弃用,我也不太确定该如何解决。

解决方案

这是因为 log4net 仍然配置为使用旧的SQL客户端提供程序

System.Data.SqlClient.SqlConnection, System.Data

它在.NET Framework 4.8中存在,但在现代的.NET / ASP.NET Core(5及以上到10)中,微软已将对SQL Server的支持移到了不同的包

Microsoft.Data.SqlClient

即使已安装 Microsoft.Data.SqlClient NuGet包,log4net 仍会继续尝试加载旧的提供程序,除非更新应用程序的appender配置。将 connectionTypelog4net 配置中的更新为:

<connectionType value="System.Data.SqlClient.SqlConnection, System.Data" />

改为

<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient" />

修改后,SQL appender应该能够在ASP.NET Core / .NET 10上正常工作

同时请确保项目引用

Microsoft.Data.SqlClient

并删除对已弃用的 System.Data.SqlClient 包的任何不必要依赖,除非另一个遗留库明确需要它

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章