Azure部署Web应用启动时注册MvcCore遇KeyNotFoundException问题
解决Azure部署Web应用时MvcCore依赖注册的KeyNotFoundException问题
看起来你碰到的是本地运行正常,但部署到Azure后出现的依赖加载问题,结合错误栈和你提供的代码,我整理了几个常见的排查和解决方向:
检查发布时的依赖包含设置
本地环境的依赖是完整的,但Azure部署时可能因为发布配置的问题,漏掉了MvcCore相关的必要程序集。你可以尝试:- 打开项目的发布配置,把「部署模式」从「框架依赖」切换为「自包含」,确保所有依赖都被打包进发布包;
- 确认所有和AspNetCore.Mvc相关的NuGet包(比如
Microsoft.AspNetCore.Mvc.Core、Microsoft.AspNetCore.Mvc.Abstractions等)都已正确引用,并且没有被标记为「私有资产=false」之类的设置导致发布时被排除。
排查TelemetryActionFilter的实现问题
你在AddMvcCore时添加了自定义的TelemetryActionFilter,这个过滤器可能是问题的源头:- 先临时注释掉
options.Filters.Add(new TelemetryActionFilter());这一行,重新部署到Azure。如果错误消失,说明过滤器内部存在问题; - 检查过滤器的代码,有没有访问字典类但未判断键是否存在的逻辑,或者依赖了本地存在但Azure环境中未配置的服务/配置项(比如某个AppSettings里的键,本地有但Azure应用配置里没加)。
- 先临时注释掉
确保本地与Azure的.NET运行时版本一致
本地开发用的AspNetCore版本和Azure App Service上的运行时版本不匹配,也可能导致依赖解析失败:- 查看项目文件(
.csproj)里的<TargetFramework>节点,确认目标框架版本(比如net6.0); - 登录Azure门户,进入你的应用服务,在「配置」->「常规设置」里,把.NET运行时版本设置为和本地一致的版本。
- 查看项目文件(
清理Azure部署的残留文件
旧的部署文件残留可能引发依赖冲突:- 进入Azure应用服务的「高级工具」,打开Kudu控制台;
- 导航到
site/wwwroot目录,删除所有文件,然后重新发布你的项目。
内容的提问来源于stack exchange,提问作者Gregorio
相关产品推荐
相关产品推荐

