小编Con*_*ing的帖子

.NET Core IServiceScopeFactory.CreateScope()vs IServiceProvider.CreateScope()扩展

我的理解是,当使用内置的依赖注入时,.NET Core控制台应用程序将要求您自己创建和管理所有作用域,而ASP.NET Core应用程序将HttpRequest默认通过已定义的中间件创建和管理作用域.

使用ASP.NET Core,您可以选择创建和管理自己的范围,通过CreateScope()在需要服务之外的服务时调用HttpRequest.

很明显,每次呼叫IServiceScopeFactory.CreateScope()都会创造新的东西IServiceScope; 但是,调用IServiceProvider.CreateScope()扩展方法是否IServiceScope每次都创建一个新的?

基本上,在ASP.NET Core和.NET Core控制台应用程序中创建范围的以下方法之间是否存在有意义的差异:

public class Foo()
{
    public Foo(IServiceProvider serviceProvider)
    {
        using(var scope = serviceProvider.CreateScope())
        {   
            scope.ServiceProvider.GetServices<>();           
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

public class Bar()
{
    public Bar(IServiceScopeFactory scopeFactory)
    {
        using(var scope = scopeFactory.CreateScope())
        {   
            scope.ServiceProvider.GetServices<>();           
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection .net-core asp.net-core

23
推荐指数
3
解决办法
1万
查看次数