迁移至.Net Core 6后AspNetCore.HealthChecks.UI启动报错问题问询
报错原因
该异常是AspNetCore.HealthChecks.UI包版本与.NET 6运行时依赖的Entity Framework Core版本不兼容导致的:
你当前使用的AspNetCore.HealthChecks.UI版本为适配.NET 5及更低版本的旧版本,内部自带的低版本EF Core依赖,会和.NET 6默认集成的EF Core 6.x版本冲突。EF Core 6的QueryableMethods静态构造函数中,使用Single方法匹配目标重载时,同时加载的两个不同版本EF Core程序集提供了多个符合条件的匹配项,最终触发该异常。
解决方案
按以下步骤操作即可解决:
- 升级所有相关NuGet包到适配.NET 6的版本:将
AspNetCore.HealthChecks.UI、AspNetCore.HealthChecks.UI.InMemory.Storage包的版本统一升级到v6.0.0及以上同版本号。 - 清理残留的旧版本包缓存:执行命令
dotnet nuget locals all --clear后,再执行dotnet restore重新还原项目依赖,避免旧版本包残留导致冲突。 - 可选优化:将.NET 5风格的端点注册代码替换为.NET 6的极简写法,删除原有
app.UseEndpoints代码块,改为直接在中间件配置末尾添加如下代码:
app.MapRazorPages(); app.MapHealthChecksUI();
修改完成后重新编译运行项目即可恢复正常。
内容的提问来源于stack exchange,提问作者Olivier Quirion
相关产品推荐
相关产品推荐

