部署至Azure App Service后加载Microsoft.Data.SqlClient失败求助
解决Azure App Service中Microsoft.Data.SqlClient程序集找不到的问题
检查发布配置的依赖项复制行为
- 打开项目文件(.csproj),在
<PropertyGroup>节点下添加<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>,确保发布时所有依赖包都被复制到输出目录。 - 检查发布配置文件(.pubxml),确认没有在
<ExcludeFilesFromDeployment>中排除Microsoft.Data.SqlClient相关文件。
- 打开项目文件(.csproj),在
对齐.NET与EF Core版本
- 当前使用.NET 6.0,但引用的Microsoft.EntityFrameworkCore.SqlServer为7.0.2,跨大版本引用易引发依赖冲突。建议将EF Core版本降级至6.x系列(如6.0.15),与.NET 6保持版本一致。
添加程序集绑定重定向
- 在项目根目录创建或修改
runtimeconfig.json,添加以下配置,让运行时自动适配可用的程序集版本:{ "runtimeOptions": { "assemblyBinding": { "dependencies": { "Microsoft.Data.SqlClient": { "assemblyVersion": "5.0.0.0", "publicKeyToken": "***********", "redirectTo": "你部署目录中实际存在的版本号" } } } } } - 替换配置中的
***********为实际公钥令牌,你部署目录中实际存在的版本号为site/wwwroot下Microsoft.Data.SqlClient的版本。
- 在项目根目录创建或修改
检查Linux环境文件权限
- 通过Azure App Service的SSH终端进入site/wwwroot目录,执行
ls -l Microsoft.Data.SqlClient.dll查看文件权限。若应用进程无读取权限,执行chmod 644 Microsoft.Data.SqlClient.dll修改权限。
- 通过Azure App Service的SSH终端进入site/wwwroot目录,执行
清理缓存重新部署
- 删除本地发布目录的所有文件,重新生成并发布。同时在Azure门户的Kudu工具中,清空site/wwwroot目录后再重新部署,避免旧缓存文件干扰。
内容的提问来源于stack exchange,提问作者Ilya Valoshyk
相关产品推荐
相关产品推荐

