.NetCore依赖注入在Configure方法中无法获得Scope生命周期实例


问题描述

Configure方法中,通过调用IApplicationBuilderApplicationServices属性的GetRequiredService()的方法,无法获得ServiceType的实例,系统会抛出异常“Cannot resolve scoped service ...”

原因

IApplicationBuilder 的 ApplicationServices 属性获取的是Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope根部的 IServiceProvider。而这一个Provider没有提供Scope的实例管理。

解决方法

在Configure方法中传入IServiceProvider参数,通过此参数去获取实例即可。