Вот код Program.cs:
Код: Выделить всё
builder.Services.AddHttpClient("MyApiClient",
client => client.BaseAddress = new Uri("https://api.test.com"))
.AddHttpMessageHandler();
builder.Services.AddScoped(sp => sp.GetRequiredService()
.CreateClient("MyApiClient"));
Код: Выделить всё
public async Task GetUser()
{
// Set URL
var url = "/account/info";
var user = await GetAsync(url);
return user;
}
private async Task GetAsync(string url)
{
if (string.IsNullOrWhiteSpace(url))
return default;
using (var client = _httpClientFactory.CreateClient("MyApiClient"))
{
var result = await client.GetAsync(url);
if (!result.IsSuccessStatusCode)
throw new Exception("My API GET call failed. URL: " + url);
var json = await result.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize(json);
}
}
P.S. Я вижу, что HttpClient создан правильно, а BaseAddress верен в полученном сообщении об ошибке. Сообщение об ошибке представляет собой стандартную ошибку несанкционированного доступа. Я не вижу никаких дополнительных данных в сообщении об ошибке, кроме URL-адреса. определенно правильный.
Я также хочу упомянуть, что я обрабатываю управление идентификацией и токены доступа через Azure AD B2C. Эта настройка кажется правильной, поскольку пользователь может нормально войти в систему, и идентификатор пользователя также верен.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ess-tokens