.NetCore依赖注入在Configure方法中无法获得Scope生命周期实例
问题描述
在Configure
方法中,通过调用IApplicationBuilder
的ApplicationServices
属性的GetRequiredService<ServiceType>()
的方法,无法获得ServiceType
的实例,系统会抛出异常“Cannot resolve scoped service ...”
原因
IApplicationBuilder 的 ApplicationServices 属性获取的是Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope根部的 IServiceProvider。而这一个Provider没有提供Scope的实例管理。
解决方法
在Configure方法中传入IServiceProvider参数,通过此参数去获取实例即可。