ASP.NETCore3.1'Cannotresolvescopedservicefromrootprovider.'
创始人
2024-09-17 09:00:51
0

在 ASP.NET Core 3.0 及以上版本中,应用程序在启动时会自动验证依赖注入容器中服务的生命周期。在某些情况下,由于将请求服务的作用域范围限制为请求级别的适用范围,因此会出现 'Cannot resolve scoped service from root provider.” 错误。

这种错误的一个常见原因是将一个作用域服务注入到单例服务中。在这种情况下,请求级别作用域将被错误地用于整个应用程序,导致无法解析作用域服务。为了解决这个问题,我们可以通过将更短的生命周期范围应用于我们的服务来解决这个问题。

以下是一个示例代码:

//注册服务 services.AddScoped(); services.AddSingleton();

//错误的注入方式 public class SingletonService: ISingletonService { private readonly IServiceProvider _provider; public SingletonService(IServiceProvider provider) { _provider = provider; } public void DoSomething() { using (var scope = _provider.CreateScope()) { var scopedService = scope.ServiceProvider.GetRequiredService(); scopedService.DoSomething(); } } }

//解决方案 public class SingletonService: ISingletonService { private readonly IServiceScopeFactory _serviceScopeFactory; public SingletonService(IServiceScopeFactory serviceScopeFactory) { _serviceScopeFactory = serviceScopeFactory; } public void DoSomething() { using (var scope = _serviceScopeFactory.CreateScope()) { var scopedService = scope.ServiceProvider.GetRequiredService(); scopedService.DoSomething(); } } }

在上面的代码中,我们将 IServiceScopeFactory 注入到 SingletonService 中,然后使用它来创建作用域范围并解决 ScopedService 依赖项。

相关内容

热门资讯

wepoke模拟器!gg扑克发... wepoke模拟器!gg扑克发牌好假,(Wpk)本来是有挂(详细辅助解说技巧);支持多人共享记分板与...
透视肯定(wepoke确实有挂... 透视肯定(wepoke确实有挂)fishpoker大菠萝外挂(详细辅助透明教程)原本有挂1)wepo...
微扑克ai机器人!wepoke... 微扑克ai机器人!wepoke软件透明挂,(wepOke)从来存在有挂(详细透视wpk教程)是一款可...
透视智能ai(wepokeai... 透视智能ai(wepokeai机器人)微扑克有挂(详细辅助扑克教程)都是是真的有挂,您好,wepok...
wepoke一定有挂!wepo... wepoke一定有挂!wepoke辅助机器人,(AAPoKER)一直有挂(详细透视辅助教程)科技教程...
透视好友房(wepoke真的有... 透视好友房(wepoke真的有挂)德扑ai智能机器人线上代打(详细辅助科技教程)好像是有挂是一款可以...
透视代打(微扑克游戏辅助器)w... 透视代打(微扑克游戏辅助器)wpk ai(详细辅助力荐教程)真是真的是有挂是一款可以让一直输的玩家,...
wepoke辅助技巧!德州之星... wepoke辅助技巧!德州之星辅助透视,(aapokEr)果然真的是有挂(详细辅助实用技巧);《WP...
透视模拟器(WePoKe透明挂... 透视模拟器(WePoKe透明挂)微扑克辅助钻石(详细辅助2025新版总结)总是是有挂1)WePoKe...
微扑克全自动机器人!wepok... 微扑克全自动机器人!wepoke ai,(wEPOKE)本然是有挂(详细透视插件教程)1、点击下载安...