我正在使用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}¬ify=true";
var response = ProcessHttpRequest(token, HttpMethod.Put, requestUrl, assignSubscription).Result;
假设状态码为成功:
var subResponse = JsonConvert.DeserializeObject<AzurePutSubscriptionResponse>(assignResult.Content.ReadAsStringAsync().Result);
response.ApiKey = subResponse.Properties.PrimaryKey;