Мы используем новую поддержку DI в IHTTPClientFactory в .NET 9, с различными клиентами, определенными для каждой конечной точки API. Определение статических значений, таких как базовый URL, является простым, но мы хотели бы также определить заголовки авторизации в конфигурации. Звонищий должен предоставить токен для носителя во время выполнения. Как бы мы обновили бы следующую конфигурацию для поддержки передачи токена предъявителя во время выполнения? < /P>
var builder = Host.CreateApplicationBuilder(args);
// removed additional config here
builder.Services.ConfigureHttpClientDefaults(b => b.AddAsKeyed());
builder.Services.AddHttpClient("AzureLogin", c =>
{
c.BaseAddress = new Uri($"https://{AzureLoginUrl}");
});
builder.Services.AddHttpClient("AzureServiceBus", c =>
{
c.BaseAddress = new Uri($"https://{ourNamespace}.{AzureServiceBusUrl}");
// TODO: need to figure out how to provide bearer
// c.DefaultRequestHeaders.Add("Authorization", $"Bearer {bearer}");
});
< /code>
вызывающий абонент выглядит так: < /p>
public class AlertActionService(IConfiguration _config,
[FromKeyedServices("AzureLogin")] HttpClient _azureLoginHttpClient,
[FromKeyedServices("AzureServiceBus")] HttpClient _azureServiceBusHttpClient)
{
// removed additional logic here that gets and sets the bearer value
// **TODO: Move this line to the config in Program.cs but don't how to pass bearer to config**
_azureServiceBusHttpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {bearer}");
var serviceBusResponse = await _azureServiceBusHttpClient.PostAsync(subdirectory, jsonContent);
// removed additional logic
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... guring-iht