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

时间:2016-07-18 04:37:36

标签: asp.net-core autofac

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

我已经在https://github.com/takahirom/webview-in-coordinatorlayout/blob/master/app/src/main/java/com/github/takahirom/webview_in_coodinator_layout/NestedWebView.java点击了一个repro项目。

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

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

2 个答案:

答案 0 :(得分:9)

好的,所以我犯了将依赖项注入中间件构造函数的错误。

您应该将依赖项注入Invoke。

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

答案 1 :(得分:0)

更改构建器注册以使用SingleInstance()的{​​{1}},以便每个相关组件或对InstancePerLifetimeScope()的调用都获得相同的共享实例。

Resolve()
  

单一实例
这也称为“单例”。使用单实例范围,从所有请求返回一个实例   根和所有嵌套范围。
当您解决单个范围时   实例组件,无论何处,您始终都可以获得相同的实例   你提出要求。

检查链接以获取更多详细信息 http://docs.autofac.org/en/latest/lifetime/instance-scope.html#single-instance