.net6 中间件构造函数注入时提示:Cannot resolve scoped service 'xx.DBContext' from root provider 是因为在单一实例解析范围内服务,默认情况下在开发环境中,从具有较长生存期的其他服务解析服务将引发异常。要在中间件中使用范围内服务,请使用以下方法之一:
一、将服务注入中间件的 Invoke 或 InvokeAsync 方法。 使用构造函数注入会引发运行时异常,因为它强制使范围内服务的行为与单一实例类似。 生存期和注册选项部分中的示例演示了 InvokeAsync 方法。
二、使用基于工厂的中间件。 使用此方法注册的中间件按客户端请求(连接)激活,这也使范围内服务可注入中间件的 InvokeAsync 方法。
-----------------------------------
参考:.Net Core依赖注入之生命周期
https://blog.51cto.com/u_15507710/5008524