В Blazor webassembly 3.2.0 Preview 3, страница Fetchdata использует этот код для вызова API сервера:
protected override async Task OnInitializedAsync()
{
var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(Navigation.BaseUri);
var tokenResult = await AuthenticationService.RequestAccessToken();
if (tokenResult.TryGetToken(out var token))
{
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.Value}");
forecasts = await httpClient.GetJsonAsync<WeatherForecast[]>("WeatherForecast");
}
else
{
Navigation.NavigateTo(tokenResult.RedirectUrl);
}
}
Есть ли способ инкапсулировать код получения токена в службу, например, с помощью Делегирующий Хэндлер. Я создал такой сервис, но я не уверен, как подключить мой обработчик к клиенту Http. У builder.Services.AddBaseAddressHttpClient () нет метода AddHttpMessageHandler, так как я могу присоединить мой делегирующий обработчик?
builder.Services.AddBaseAddressHttpClient()
.AddHttpMessageHandler<MyHandler>(); <----This is not valid