在ASP.NET Core中的IoC服务容器的上下文中有哪些请求?

在ASP.NET Core中的IoC服务容器的上下文中有哪些请求?

我正在these教程的帮助下学习ASP.NET Core。我遇到了以下摘录:

  

范围:IoC容器将为每个请求创建一次指定服务类型的实例,并将在单个请求中共享。

我不明白我们在这里谈论什么要求?这是否意味着每次后端控制器处理请求时,都会创建IoC容器提供的服务的新实例并将其隐式放置在类(代表控制器)的字段中?还是意味着其他类型的请求?

换句话说,如果我们有:

public void ConfigureServices(IServiceCollection services)
{
    services.Add(new ServiceDescriptor(typeof(ILog),typeof(MyConsoleLogger),ServiceLifetime.Scoped));
}

public class HomeController : Controller
{
    ILog _log;

    public HomeController(ILog log)
    {
        _log = log;
    }
    public IactionResult Index()
    {
        _log.info("Executing /home/index");

        return View();
    }
}

每次ILog控制器处理请求时,_log中的HomeController实例是否会不同?

cy19900528 回答:在ASP.NET Core中的IoC服务容器的上下文中有哪些请求?

是的,将为每个HTTP请求创建一个新对象。这对于不是线程安全的有状态依赖关系很有用。臭名昭著地要求以这种方式对待实体框架对象上下文。

如果依赖项是无状态的或线程安全的,则可以为它配置另一个生存期,以便在应用程序的生存期内仅创建和重用一个对象。

像上述HomeController这样的控制器总是按每个请求创建 。 IIRC,您无法更改。

本文链接:https://www.f2er.com/3033727.html

大家都在问