【发布时间】:2016-06-30 22:25:35
【问题描述】:
在 ASP.NET Core 1.0 中使用 Autofac。
我希望能够在我的每个请求范围内的注册上使用InstancePerMatchingLifetimeScope(),这样如果无法从预期的生命周期范围内解决依赖关系,我将收到错误,而不是退回到根生命周期范围会导致难以追踪的细微运行时错误。
但是,我不知道要使用什么标签 - 在 ASP.NET 的早期版本中,它可能类似于“AutofacWebRequest”,但它不再起作用了。
有没有办法访问 ASP.NET Core 的命名范围以进行匹配?或者,如果做不到这一点,还有其他解决方案吗?
【问题讨论】:
-
不确定我是否理解您的问题。在 (ASP).NET Core 中注册是强制性的。如果您不注册依赖项,它将无法解决。您确实使用
.AddScoped<T, TImp>()注册了一个范围。除此之外的任何东西都将由第 3 方容器提供,即通过扩展方法或重载到AddSingleton(),我看不到它们在 github.com/autofac/Autofac/blob/develop/src/… 中具有IServiceCollection的扩展方法 -
问题是如果我有一个需要请求范围依赖的单例依赖 - 请求范围的依赖仍将被注入,但它将从父根生命周期范围内解析,因此它是'范围不正确,但使用依赖项的代码无法知道这一点。我希望这是运行时的自动错误,因此我想尝试使用匹配来强制生命周期范围是显式的,但在 .NET Core 中这似乎是不可能的。
标签: asp.net-core autofac