.NET 7.0在.NET Core Web API中实现限流

参考文档: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();

测试结果

相关推荐
三天不学习4 小时前
【超详细】Vue3+UniApp+.NET8集成腾讯云IM即时通信全攻略
uni-app·.net·腾讯云·im·即时通信
步步为营DotNet10 小时前
.NET 11 中 Native AOT 在云原生场景下的深度剖析与实践
云原生·.net
webmote11 小时前
从零打造虚拟小智:用浏览器模拟 IoT 设备的实践之路
物联网·websocket·ai·大模型·llm·.net·小智
忧郁的蛋~14 小时前
ASP.NET Core Web API 完全指南:请求管道、认证、错误处理到生产部署
前端·后端·asp.net·.net
rrokoko15 小时前
“计算器” VB.NET源码
.net·源码·vb.net·计算器·计算器源码
rrokoko15 小时前
“扫雷”游戏 VB.NET源码
游戏·.net·源码·vb.net
小满Autumn1 天前
CommunityToolkit.Mvvm 架构笔记:现代 MVVM、源生成器与工程化实践
笔记·架构·c#·.net·wpf·mvvm
token-go1 天前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
低代码·.net·rxjava
webmote331 天前
从零打造虚拟小智:用浏览器模拟 IoT 设备的实践之路
aigc·.net·嵌入式
步步为营DotNet2 天前
探索.NET 11:Blazor 在跨平台客户端应用开发的进阶实践
前端·asp.net·.net