Windows Plesk发布ASP.NET Core7 Web API遇Microsoft.Data.SqlClient加载错误
解决ASP.NET Core 7 Web API部署Plesk后Microsoft.Data.SqlClient加载失败问题
一、先确认程序集是否真的部署到主机
- 检查项目文件(
.csproj)里的包引用:确保有<PackageReference Include="Microsoft.Data.SqlClient" Version="x.x.x" />,版本号要和本地开发环境一致,避免版本冲突。 - 发布方式调整:如果用的是框架依赖部署,主机的.NET 7运行时可能缺少该程序集,建议切换成自包含部署,把所有依赖打包进去,避免依赖主机环境。
- 验证部署文件:登录Plesk主机找到网站发布目录,检查
bin文件夹下是否有Microsoft.Data.SqlClient.dll,且版本和错误提示的5.0.0.0(或你项目引用的版本)一致。如果没有,重新发布时勾选“包含所有依赖项”。
二、搞清楚主机到底用哪条连接字符串
ASP.NET Core加载连接字符串的优先级是:命令行参数 > 环境变量 > appsettings.{环境名}.json > appsettings.json > DbContext硬编码值。
- 直接在Plesk网站设置里加环境变量
ConnectionStrings__你的DbContext名称,值填主机提供的正确连接字符串,这样会覆盖所有配置文件里的内容,确保用的是这条。 - 加个测试接口验证:
部署后调用这个接口,就能明确当前用的是哪条连接字符串,不用瞎改参数试错。[HttpGet("check-conn")] public IActionResult GetCurrentConnStr([FromServices] IConfiguration config) { var connStr = config.GetConnectionString("你的DbContext名称"); return Ok(connStr); }
三、处理程序集版本绑定冲突
如果主机上存在不同版本的Microsoft.Data.SqlClient,会导致加载失败,在发布后的web.config里加版本绑定重定向:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Data.SqlClient" publicKeyToken="23ec7fc2d6eaa4a5" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
注意把newVersion改成你项目实际引用的版本号。
四、检查Plesk主机的.NET环境
- 登录Plesk进入“工具与设置”->“服务器组件”,确认已安装.NET 7.0运行时,且是最新补丁版本。
- 安装
Microsoft.Data.SqlClient.SNI包:这个包包含SQL Server Native Access的依赖,很多时候主机环境缺这个,装了就能解决加载问题。
五、重新发布的正确步骤
- 本地先清理项目:执行
dotnet clean再dotnet restore,确保依赖是最新的。 - 发布到本地文件夹,然后手动把整个文件夹上传到Plesk,避免自动发布遗漏文件。
- 上传后在Plesk里重启网站,让新依赖生效。
内容的提问来源于stack exchange,提问作者Reza245
相关产品推荐
相关产品推荐

