ABP.IO ICachedServiceProvider
筆記下 ICachedServiceProvider 與 HttpClient 的坑
結論
var httpClientFactory = _cachedServiceProvider.GetRequiredService<IHttpClientFactory>();
var httpClient = httpClientFactory.CreateClient(nameof(ITestService));
// ...
var response = await httpClient.PostAsJsonAsync("oauth/token", testRequest);
總之直接用 ICachedServiceProvider 取得 HttpClient 會吃不到 TypedHttpClient 的設定
這邊改用 ICachedServiceProvider取得 IHttpClientFactory再用 介面名稱 透過工廠模式取得
問題
var httpClient = _cachedServiceProvider.GetRequiredService<HttpClient>();
// ...
var response = await httpClient.PostAsJsonAsync("oauth/token", testRequest);
會報錯誤訊息
備註
ConfigureServices
private void ConfigureHttpClient(ServiceConfigurationContext context)
{
var options = context.Services.ExecutePreConfiguredActions<TestOptions>();
context.Services.AddHttpClient<ITestService, TestService>(httpClient =>
{
httpClient.BaseAddress = options.BaseAddress;
});
}
參照
Dependency Injection | Documentation Center | ABP.IO

PS5
DI
HttpClinet
回首頁
本文章從點部落遷移至 Writerside
14 October 2025