You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的依赖,很多时候主机环境缺这个,装了就能解决加载问题。

五、重新发布的正确步骤

  1. 本地先清理项目:执行dotnet clean再dotnet restore,确保依赖是最新的。
  2. 发布到本地文件夹,然后手动把整个文件夹上传到Plesk,避免自动发布遗漏文件。
  3. 上传后在Plesk里重启网站,让新依赖生效。

内容的提问来源于stack exchange,提问作者Reza245

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:10:06