【发布时间】:2021-01-16 18:46:33
【问题描述】:
我在 .net core 3 web api 应用程序中使用 AspNetCoreRateLimit。我希望有一种方法可以在路径中使用通配符来将与路径匹配的所有请求限制为某个数字。 这是我在 appsettings 中的(不正确的)配置:
"ClientRateLimiting": {
"EnableEndpointRateLimiting": true,
"StackBlockedRequests": false,
"ClientIdHeader": "X-ClientId",
"HttpStatusCode": 429,
"QuotaExceededMessage": "System is busy, please try again later",
"GeneralRules": [
{
"Endpoint": "get:/api/*",
"Period": "10s",
"Limit": 3
},
]
}
不幸的是,通过上述配置,每个匹配端点模式的唯一 url 都可以在 10 秒内执行 3 次。例如,api/test/foo、api/test1/foo 和 api/test2/foo 将被允许在 10 秒内并发执行 3 次 - 即每 10 秒总共有 9 个请求。
有没有办法配置限制器以将与模式匹配的所有请求限制为单个数字?也就是说,我想确保只有 3 个匹配模式的请求可以在 10 秒内执行。
【问题讨论】:
-
您找到解决方法了吗?我也在寻找这个问题的答案。
标签: c# asp.net-core throttling rate-limiting