使用Azure API管理创建公共API

使用Azure API管理创建公共API,azure,azure-api-management,Azure,Azure Api Management,我正在使用Azure API管理来管理Azure中的Web应用程序。 但是,我想公开一些API,不希望用户订阅这些API。 未订阅的用户每分钟只能拨打10个电话。 我创建了一个没有任何密钥的新订阅,并将速率限制策略每分钟10次呼叫添加到订阅中,但是,当我在10秒内拨打10次电话时,我会得到429状态代码,这是非常容易理解的。 但在同一时间段的一分钟内,如果我从不同的设备调用相同的API,我仍然会得到429状态码。 用户必须能够从第二台设备访问API,因为它根本没有访问API。 如何在Azure

我正在使用Azure API管理来管理Azure中的Web应用程序。 但是,我想公开一些API,不希望用户订阅这些API。 未订阅的用户每分钟只能拨打10个电话。 我创建了一个没有任何密钥的新订阅,并将速率限制策略每分钟10次呼叫添加到订阅中,但是,当我在10秒内拨打10次电话时,我会得到429状态代码,这是非常容易理解的。 但在同一时间段的一分钟内,如果我从不同的设备调用相同的API,我仍然会得到429状态码。 用户必须能够从第二台设备访问API,因为它根本没有访问API。
如何在Azure API管理中实现这一点?

通过阅读以下文档,我找到了解决方案

然而,它发生了一件奇怪的事情。 我已在API管理中设置了续订期限=60。 当我使用通过wifi连接的第一台设备在大约10秒内发出10个请求时,我会收到429状态代码和消息:超出速率限制。34秒后再试一次

但是,当我使用通过蜂窝网络连接的第二台设备移动电话在大约10秒内发出10个请求时,我应该会收到一条消息,指示在50秒或60秒后重试。 我在第二台设备上得到的信息如下: 消息:超过速率限制。24秒后再试一次。 这有点奇怪,因为时间表示第一台设备的更新时间

<rate-limit-by-key  calls="10"
          renewal-period="60"
          counter-key="@(context.Request.IpAddress)" />

<quota-by-key calls="1000000"
          bandwidth="10000"
          renewal-period="2629800"
          counter-key="@(context.Request.IpAddress)" />