【问题标题】:Does the request scope have a tag for matching lifetime?请求范围是否有匹配生命周期的标签?
【发布时间】: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


【解决方案1】:

.NET Core 中的请求范围没有标签,因为 Autofac 不再负责创建请求范围。没有解决方法。 See the docs here.

【讨论】:

  • 谢谢,看来我在注册时必须非常小心。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多