我的理解是,当使用内置的依赖注入时,。NET 核心控制台应用程序将要求您自己创建和管理所有作用域,而 ASP.NET 核心应用程序将通过定义的中间件默认创建和管理 HttpRequest
作用域。
使用 ASP.NET Core,当您需要位于 HttpRequest
之外的服务时,您可以通过调用 CreateScope()
来创建和管理自己的作用域。
很明显,每次调用 IServiceScopeFactory.CreateScope()
都会创建一个新的 IServiceScope
; 但是,每次调用 IServiceProvider.CreateScope()
扩展方法也会创建一个新的 IServiceScope
吗?
基本上,在 ASP.NET Core 和 ASP.NET Core 中创建范围的以下方法之间是否存在有意义的区别。NET 核心控制台应用程序:
public class Foo()
{
public Foo(IServiceProvider serviceProvider)
{
using(var scope = serviceProvider.CreateScope())
{
scope.ServiceProvider.GetServices<>();
}
}
}
还有
public class Bar()
{
public Bar(IServiceScopeFactory scopeFactory)
{
using(var scope = scopeFactory.CreateScope())
{
scope.ServiceProvider.GetServices<>();
}
}
}