正在使用async检索身份验证令牌,以便通过HttpClientFactory使用



我正在尝试将HttpClientFactory配置为使用Authorization标头。问题是必须从身份验证服务中检索身份验证令牌,这是另一个HTTP调用,最好使用wait来完成。然而,这并没有像预期的那样工作(至少在ASP.NET Core 2.2中没有(:

// Func<IServiceProvider, Task<string>> tokenFactory = ...
builder.ConfigureHttpClient(async (provider, httpClient) =>
{
string token = await tokenFactory(provider);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
});

看起来,无论何时涉及传递给ConfigureHttpClient的操作,都不会等待。

有什么解决办法吗?是否应该改进ConfigureHttpClient,或者我缺少一些允许这样做的现有功能?

看看这个答案:

如何使用IHttpClientFactory 刷新令牌

在发送请求之前创建一个单独的DelegatingHandler来处理HttpClient请求。在这个处理程序中,可以解析异步调用。

最新更新