2017-04-25 93 views
0

我正在構建一個WebAPI方法,需要支持每個請求內容的特定作用域配置註冊。每個請求使用作用域配置對象註冊時的方法ASP.Net核心依賴注入

我有一個現有的服務庫,期望在構建一個較低級別的服務時注入一個配置對象。 API控制器的構造函數注入了一個更高級別的服務,該服務依賴於較低級別。 DI正在很好地處理依賴關係樹。

我的第一個想法是將配置對象更改爲Scoped生命週期,並創建一箇中間件組件來攔截請求並根據請求更改配置對象的屬性。

對於ASP.Net核心中的依賴注入新的微軟方法,這是什麼方法?

回答

0

我發現,通過使用中間件組件,我可以註冊配置作用域:

services.AddScoped<IMyConfiguration, MyConfiguration>(); 

,然後改變它在中間件:

public async Task Invoke(HttpContext context) 
{ 
    var config = context.RequestServices.GetService<IMyConfiguration>(); 
    config.Value = "foobar"; 
    _logger.LogInformation($"MyMiddleware: {config.Id}"); 
    await _next(context); 
} 

我只需要檢查上下文拉我的配置。