You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中ASP.NET Core RateLimit不生效问题排查

问题排查与解决

1. 未注册限流中间件

你仅在Program.cs中配置了限流服务,但未将限流中间件加入请求管道,这是核心问题。需在Program.cs的app构建段添加:

// 注意顺序:需放在UseRouting之后,UseAuthorization/UseEndpoints之前
app.UseIpRateLimiting();

2. 限流规则的Endpoint路径不匹配

你的控制器路由为[Route("api/[controller]")],接口实际路径是/api/SuperAdmin/Add,但appsettings.json中配置的Endpoint是*:/SuperAdmin/*,与实际路径不匹配。修改规则中的Endpoint:

"GeneralRules": [
  {
    "Endpoint": "*:/api/SuperAdmin/*",
    "Period": "5s",
    "Limit": 2
  }
]

3. 缺少HttpContextAccessor服务

AspNetCoreRateLimit依赖IHttpContextAccessor获取请求上下文,需在Program.cs的服务配置中添加:

builder.Services.AddHttpContextAccessor();

4. 确认中间件顺序正确

完整的Program.cs请求管道配置顺序示例:

var app = builder.Build();

app.UseHttpsRedirection();
app.UseRouting();

// 限流中间件必须在此位置
app.UseIpRateLimiting();

app.UseAuthorization();
app.MapControllers();

app.Run();

5. 验证NuGet包安装

确认已正确安装AspNetCoreRateLimit NuGet包,版本需与你的.NET版本兼容(如.NET 6+对应最新稳定版)。

按上述步骤调整后重启服务,再次测试5秒内多次调用接口,即可触发429限流响应。

内容的提问来源于stack exchange,提问作者mathdx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:15:30