实际上,我正在尝试为特定客户重新分配配额,因为他超出了配额,但同时我不想仅针对此客户为所有客户端重置配额,也不更改订阅密钥。
下面的代码无法正常工作,我尝试测试它,没有完全达到限制,有时达到超过配额,有时低于配额,而且差别不小,差别很大
<choose>
<when condition="@(context.Subscription.Id == "")">
<quota-by-key calls="20" renewal-period="500" counter-key="@(context.Subscription.Key)" />
</when>
<otherwise />
</choose>
我通过创建新的订阅密钥来使用相同的策略,它对我来说按预期工作。
请验证您使用的订阅 ID 是否正确。默认情况下,如果您未在任何其他订阅密钥的请求标头中提供 ocp-apim-subscription-key,APIM 会采用内置全访问订阅订阅密钥。对于内置全访问订阅,订阅 ID 值为 master。
您可以借助以下策略检查您的 API 正在使用的订阅密钥名称和 ID -
<set-variable name="ID" value="@(context.Subscription.Id)" />
<set-variable name="Name" value="@(context.Subscription.Name)" />
您可以在Trace中看到数值
政策
<choose>
<when condition="@(context.Subscription.Id== "test")">
<quota-by-key calls="2" renewal-period="300" counter-key="@(context.Subscription.Key)" />
</when>
</choose>
测试
踪迹
您也可以参考这个链接。