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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:01:58