После вызова API для создания подписки происходит сбой первоначального вызова API с ключом, последующие вызовы работают - PullRequest
0 голосов
/ 14 июня 2019

Я использую API-интерфейсы управления API Azure для автоматической регистрации пользователей для ключа API. После выполнения подписки PUT возвращаются первичный и вторичный ключи API. Если я возьму первичный ключ API и попытаюсь выполнить первоначальный вызов сразу для одного из наших API-интерфейсов продукта, произойдет сбой с 401 «Доступ запрещен из-за неверного ключа подписки. Убедитесь, что вы предоставили действительный ключ для активной подписки». Но если я подожду несколько секунд и повторно отправлю один и тот же запрос во второй раз, это сработает и после этого сработает для всех вызовов. Как будто ключ не готов к немедленному использованию, как только я получу ответ от подписки PUT. Требуется ли определенное количество времени для распространения подписки в Azure API Management, прежде чем она будет готова к использованию? Мы работаем только в одном регионе, в центральной части США.

var assignSubscription = new
        {
            UserId = $"/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{ServiceName}/users/{userId}",
            ProductId = $"/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{ServiceName}/products/{ProductId}",
            DisplayName = ProductDisplayName,
            State = "active"
        };

var requestUrl = $"{ManagementApiUrl}/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{ServiceName}/subscriptions/{userId}?api-version={ApiVersion}&notify=true";
var response = ProcessHttpRequest(token, HttpMethod.Put, requestUrl, assignSubscription).Result;

Предполагается, что код состояния «Успешно»:

var subResponse = JsonConvert.DeserializeObject<AzurePutSubscriptionResponse>(assignResult.Content.ReadAsStringAsync().Result);
response.ApiKey = subResponse.Properties.PrimaryKey;
...