Azure App Service 部署的.NET Core 2.1应用启动报错:依赖清单中指定的程序集未找到
排查Azure App Service上.NET Core 2.1应用启动失败问题
嘿,遇到这个问题我太熟悉了——之前帮朋友排查过几乎一模一样的情况,咱们一步步来拆解解决:
这个错误的核心很明确:你的应用依赖清单(Microsoft.AspNetCore.AzureAppServices.HostingStartup.deps.json)里要求加载2.2.0版本的Microsoft.AspNetCore.AzureAppServices.HostingStartup组件,但在Azure环境里找不到对应的DLL。而本地IIS能正常运行,说明问题大概率出在Azure的运行环境配置或者部署包的依赖处理上。
1. 锁死Azure App Service的.NET Core运行时版本
Azure App Service有时候会自动更新默认运行时,哪怕你的应用是2.1版本,环境里的高版本组件可能会“串味”干扰依赖解析:
- 登录Azure门户,找到你的App Service,进入配置 > 常规设置
- 确认**.NET版本**设置为明确的
.NET Core 2.1(不要选Latest或者2.2/3.1这些更高版本) - 保存设置后重启应用,看看能不能正常启动
2. 重新打包部署,检查依赖文件
虽然你说近一年没更新,但可能之前的部署包缓存或者打包逻辑出了问题:
- 本地用命令行重新发布:
dotnet publish -c Release --self-contained false(保持依赖于系统运行时,不要用自包含模式) - 打开发布后的
wwwroot文件夹,检查有没有Microsoft.AspNetCore.AzureAppServices.HostingStartup.dll,并且版本是2.1.x,不是2.2.0 - 打开
Microsoft.AspNetCore.AzureAppServices.HostingStartup.deps.json,确认里面的版本号和实际DLL版本匹配
3. 临时禁用HostingStartup组件(应急方案)
如果上面两步没效果,可以直接强制禁用这个惹麻烦的HostingStartup:
- 进入App Service的配置 > 应用程序设置,新增一个配置项:
- 键:
ASPNETCORE_HOSTINGSTARTUPASSEMBLIES - 值:留空(或者把原来值里的
Microsoft.AspNetCore.AzureAppServices.HostingStartup删掉)
- 键:
- 保存后重启应用,应该能绕开这个依赖问题先让应用跑起来
4. 检查Azure的扩展组件
有时候Azure的一些内置扩展(比如Application Insights自动注入)会偷偷注入高版本的HostingStartup组件,干扰你的应用:
- 进入App Service的扩展页面,看看有没有安装和ASP.NET Core相关的扩展,先暂时卸载掉,然后重启应用试试
- 如果是Application Insights的问题,建议在你的应用代码里手动配置AI,不要依赖Azure的自动注入功能
为什么本地IIS没问题?
本地IIS的运行环境是你自己完全控制的,.NET Core 2.1的运行时是独立隔离的,不会被高版本组件干扰;但Azure App Service是共享环境,可能存在运行时版本叠加、自动更新或者扩展注入的情况,导致依赖解析时误找到2.2.0的版本。
内容的提问来源于stack exchange,提问作者Nikita Treguobv
相关产品推荐
相关产品推荐

