参考文档:https://blog.csdn.net/zls365365/article/details/133627445
文章目录

安装NuGet包

配置appsettings.json

json
//配置限流,IP限制适应于所有全局,规则为1分钟最多访问10次
"IpRateLimiting": {
"EnableEndpointRateLimiting": false,
"StackBlockedRequests": false,
"RealIpHeader": "X-Real-IP", //服务器背后是一个反向代理,如果你的代理服务器使用不同的页眉然后提取客户端IP X-Real-IP使用此选项来设置
"ClientIdHeader": "X-ClientId", //取白名单的客户端ID。如果此标头中存在客户端ID并且与ClientWhitelist中指定的值匹配,则不应用速率限制。
"HttpStatusCode": 429, //限制状态码
//"IpWhitelist": [ "127.0.0.1" ],
"IpWhitelist": [], //IP白名单:支持Ip v4和v6
"GeneralRules": [
{
"Endpoint": "*", //端点路径
"Period": "1m", //时间段,例如1m,您可以使用以下期间类型之一:s, m, h, d。
"Limit": 10 //调用限制
}
]
}

csharp
#region 注册AspNetCoreRateLimit限流组件
builder.Services.AddMemoryCache();
//下面的IpRateLimiting为限流策略的配置文件结点名称,可以配置多个策略
builder.Services.Configure<IpRateLimitOptions>(builder.Configuration.GetSection("IpRateLimiting"));
//添加对内存中的 IP 策略存储的支持
builder.Services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
builder.Services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
builder.Services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
builder.Services.AddInMemoryRateLimiting();
#endregion
添加中间件

csharp
app.UseIpRateLimiting();
测试结果
