使用API​​调用创建订阅后,带有密钥的初始API调用失败,后续调用有效

时间:2019-06-14 20:54:12

标签: azure api subscription

我正在使用Azure API管理API自动注册用户以使用API​​密钥。执行PUT订阅后,将返回主API密钥和辅助API密钥。如果我使用主API密钥并立即尝试对我们的一个产品API进行初始调用,它将失败并显示401“由于无效的订阅密钥而拒绝了访问。请确保为有效的订阅提供有效的密钥。”但是,如果我等待几秒钟,然后第二次重新提交相同的请求,它将起作用,并且此后对所有呼叫都起作用。就像一旦我从PUT订阅获得响应后,密钥就无法立即使用。准备使用之前,订阅需要花费一定的时间在整个Azure API管理中传播吗?我们仅在美国中部一个地区设立。

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;

0 个答案:

没有答案