1

我知道AddSingleton()在第一次请求服务时会创建一个服务实例,并在需要该服务的所有地方重用相同的实例。

如果我的 ASP.NET Core 应用程序是多线程的,这是否意味着来自所有用户的所有 HTTP 请求都将共享由依赖注入(DI) 创建的同一个对象实例?

如果是这样,如果应用程序处理要存储的数据,那将不是一个好方法。有没有最佳实践?

4

2 回答 2

0

例如,如果某些共享数据在请求之间可能不会更改,例如在应用程序启动时计算并在应用程序的整个生命周期中重用的某些值,那么这是一个可用的场景。

于 2020-02-13T15:34:45.960 回答
0

如 Microsoft 文档中所述,服务生命周期,这取决于您的具体情况。

大概,如果你有一个服务 A,并且你想在每个请求上创建一个新实例,你可以使用 AddScoped() 而不是 AddSingleton()。每个客户端请求都会创建一个范围内的生命周期服务。

于 2020-02-17T03:41:59.797 回答