[英]Asp.net core service per request scope in child scopes
有什么方法可以將 asp.net 核心中的服務注冊為 Scoped 以請求不針對當前請求范圍?
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IMyService, MyService>();
}
注冊服務在請求范圍內可用后,但一旦我創建新的子范圍:
var service1 = serviceProvider.GetService<IMyService>();
var scope = serviceProvider.CreateScope();
var service2 = scope.ServiceProvider.GetService<IMyService>();
Service1 和 service2 是 2 個實例。 即使子范圍是在同一個請求中創建的。 有沒有一種方法可以將服務注冊到請求范圍,以便從同一請求范圍創建的所有子范圍都具有相同的一個實例?
相反,.Net 框架中沒有RequestScope功能。 我們使用“Scoped”,因為 .Net Core 在第一個調用的中間件開始時創建范圍,內部服務通過構造函數注入獲得相同的對象實例。 例如; 如果您收到一個 API 請求,即“作用域請求實例”,它將對內部作用域進行所有實例,但是您不能手動使用 CreateScope() 方法,因為我提到了為什么不能。
您對創建內部范圍感到困惑,但 .Net Core 為每個 API 請求創建范圍。
示例: https ://stackoverflow.com/a/38139500/7575384
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.