用途:为 ASP.NET Core(含 Razor Pages)应用提供生产可用的请求限流方案,防止滥用、保障资源公平使用并在流量高峰避免级联故障。
主要能力:1) 使用 .NET 7+ 内置 Microsoft.AspNetCore.RateLimiting 中间件,支持全局 PartitionedRateLimiter 及命名策略(固定窗口、滑动窗口、令牌桶、并发限流);2) 通过 EnableRateLimiting、RequireRateLimiting、DisableRateLimiting 等按端点应用或关闭限流;3) 提供基于 Redis 与 Lua 脚本的分布式原子限流实现,适合多服务器环境;4) 按认证用户、订阅层级(Enterprise/Pro/Basic/免费)分别设定限额,匿名用户回退到 IP 限流;5) 客户端标识辅助方法,处理 X-Forwarded-For、X-Real-IP 及可信代理;6) 自定义 429 拒绝响应与 X-RateLimit-*、Retry-After 响应头;7) 列出反模式,例如所有端点使用同一限额、缺少限流状态响应头。
使用方式:在 Program.cs 调用 AddRateLimiter 配置策略,注意 UseRateLimiter 需置于 UseRouting 之后、UseEndpoints 之前;按需注册 Redis 限流器或自定义中间件,并在应用启动时调用 UseForwardedHeaders。
适用场景:登录等敏感端点严格限流、API 高配额、突发流量、按用户层级配额的 SaaS 服务、多实例部署。
限制:资料未提供 NuGet 包名、安装命令、具体定价或平台支持范围;文中示例依赖 Redis、IUserService 等应用内组件,需自行实现。