【发布时间】:2018-08-22 04:03:39
【问题描述】:
当 webapi 处理一个请求时,它使用AsyncLocal- 意思是,容器中的所有单例都隐式地作用于请求。
您会在什么情况下注册 Scoped 服务?
【问题讨论】:
-
你是从哪里想到的容器中的所有单例都隐式地作用于请求?
-
因为
AsyncLocal的定义。单例的生命周期应该从第一次获取开始,并在应用程序结束时结束——除非我误解了 .netcore 对singleton的定义。但是由于容器上下文是在AsyncLocal的范围内创建的(因此是请求的异步线程流),所以我认为一开始就是scoped。现在scoped作为选项对 .netcore api 没有意义。
标签: asp.net-core dependency-injection inversion-of-control asp.net-core-2.0