簡體   English   中英

子范圍中每個請求范圍的 Asp.net 核心服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM