【发布时间】:2022-08-22 19:43:55
【问题描述】:
我试图限制 api 调用的速率以避免 DDos 攻击。我想要实现的是将一分钟内可以拨打的电话数量限制为 60 次,或每秒拨打 1 次电话。
我找到了 .net core api 的实现,但是对于 .net framework api,我找不到任何东西。请帮忙。
使用 ASP.net 核心 api,它看起来像这样(从 elmah blog 获得)。
在 program.cs 或 startup.cs
services.AddMemoryCache();
services.AddSingleton<IClientPolicyStore, MemoryCacheClientPolicyStore>();
services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
然后添加
services.Configure<ClientRateLimitOptions>(options =>
{
options.GeneralRules = new List<RateLimitRule>
{
new RateLimitRule
{
Endpoint = \"*\",
Period = \"1m\",
Limit = 500,
},
new RateLimitRule
{
Endpoint = \"*\",
Period = \"1h\",
Limit = 3600,
}
};
});
有人知道如何为 ASP.net 框架 API 做一个吗?
-
你好。作者在这里。我遇到了 WebApiThrottle 并且不明白那里发生了什么。
-
它现在可能没用,但如果你的应用计划在 12 月或更晚发布,你可能想看看这个视频。 youtube.com/watch?v=gMTvNnKt3AA 它解释了 .NET 7 中的新速率限制功能,这正是您正在寻找的。但是 .NET 7 还没有发布,计划在今年 11 月发布。
-
要是。这个项目有点麻烦。我正在更新一个旧项目。它使用旧的依赖项。我不允许升级项目。谢谢@Joost00719
标签: c# asp.net asp.net-core asp.net-web-api