Вероятно, дело в том, что RateCard API отправляет обратно перенаправление 302.Это изменилось в новой версии во время этого вопроса.
Рекомендуемый способ исправить это:
- Получить токен носителя,
- Сделать запрос к ARM с заголовком аутентификации, установленным на токен носителя (этокак и раньше)
- RateCard вернет код состояния 302, который представляет собой перенаправление и содержит второй URL-адрес, с которого следует получить карту оценки (это новое).
- Необходимо сделать второй запросна второй URL.Обратите внимание, что многие библиотеки http автоматически следуют за перенаправлением и делают второй запрос для вас.При выполнении второго запроса необходимо удалить заголовок авторизации, содержащий маркер канала-носителя, в противном случае вы увидите ошибку.Как это будет реализовано в вашем коде, будет зависеть от того, какой http-клиент вы используете.Для C # код выглядит следующим образом:
const string subId = "Subscription Id here";
const string token = "Auth Token here.";
const string offer = "MS-AZR-0003P";
const string currency = "USD";
const string locale = "en-US";
const string region = "US";
using (var rateCardClient = new HttpClient() { BaseAddress = new Uri("https://management.azure.com/") })
{
rateCardClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", token);
var response = await rateCardClient.GetAsync($"subscriptions/{subId}/providers/Microsoft.Commerce/RateCard?api-version=2016-08-31-preview&$filter=OfferDurableId eq '{offer}' and Currency eq '{currency}' and Locale eq '{locale}' and RegionInfo eq '{region}'");
Console.WriteLine($"StatusCode:{response.StatusCode}");
var ratecard = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
Console.Write(ratecard);
}
Для получения дополнительной информации см. Эту страницу выпуска Github: https://github.com/MicrosoftDocs/azure-docs/issues/7423