Blazor Server应用服务构建失败:无法解析IDbContextFactory依赖
解决Blazor Server中IDbContextFactory无法解析的问题
错误核心原因:你的FarmService依赖IDbContextFactory<FarmContext>,但DI容器中并未注册该服务——当前你仅通过AddDbContext注册了FarmContext本身,而非上下文工厂。
修复步骤
将Program.cs中注册DbContext的代码替换为注册DbContext工厂:
// 替换原来的AddDbContext为AddDbContextFactory builder.Services.AddDbContextFactory<FarmContext>(option => option.UseSqlServer(builder.Configuration.GetConnectionString("FarmConnection")));
可选补充(若需直接注入DbContext)
如果你的Blazor页面或组件需要直接注入FarmContext而非工厂,可以在注册工厂后额外添加:
// 允许直接注入FarmContext实例(Scoped生命周期,适配Blazor Server) builder.Services.AddScoped(sp => sp.GetRequiredService<IDbContextFactory<FarmContext>>().CreateDbContext());
原理说明
AddDbContextFactory会将IDbContextFactory<FarmContext>注册到DI容器中,刚好匹配FarmService构造函数的依赖需求。而原有的AddDbContext仅注册了FarmContext类型,无法满足对工厂接口的依赖解析,这就是导致AggregateException的直接原因。
修改后重新构建应用,即可解决服务激活失败的问题。
内容的提问来源于stack exchange,提问作者Spodey
相关产品推荐
相关产品推荐

