ASP.NET Core中的Autofac范围在中间件之间似乎有所不同

Jor*_*dan 5 autofac asp.net-core

当使用Autofac注册对象并通过控制器解析中间件和MVC中间件时,实例是不同的.实例在每个生命周期范围内注册.

我在这里弹出了一个repro项目https://github.com/jakkaj/AutofacResolveIssue.

应用程序IUserService为中间件设置一个值,然后尝试在ValuesController后面读取该值.

这种技术在旧版本的ASP.NET中使用autofac.有什么想法发生了什么?

Jor*_*dan 10

好的,所以我错误地将我的依赖注入到中间件的构造函数中.

您应该将依赖项注入Invoke.

整个中间件对象在所有应用程序实例中都是单例!

  • 感谢您回来并为此更新!我刚刚熟悉ASP.NET Core中的请求管道和中间件,并且已经在几个小时内解决了这个问题. (3认同)
  • 这里有更多关于这方面的信息...... https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware?tabs=aspnetcore2x 看来通过实现 IMiddleware 接口实现的中间件是每个请求创建一次,并且不要受此限制。 (2认同)