.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();

测试结果

相关推荐
波力海苔夹心脆67516 小时前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
慧都小妮子17 小时前
Stimulsoft 2026.4 发布:Markdown 组件、桑基图与 .NET 11 支持
.net·数据可视化·stimulsoft·版本更新·报表控件·桑基图·.net 11
上位机妹子1 天前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
波力海苔夹心脆6752 天前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
hez20102 天前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr
QUDONG_biubiubiu2 天前
.NET Runtime 6.0/7.0/8.0/9.0下载修复教程,软件打不开这样解决
.net·net runtime下载·net运行库修复·net runtime安装
宝桥南山2 天前
.NET 11 - 尝试创建一下AGUIServer和AGUIClient(基于新版.NET SDK for AG-UI)
microsoft·ai·微软·c#·aigc·.net
波力海苔夹心脆6752 天前
C# LINQ 入门到上手:一篇讲透查询语法、常用操作符与延迟执行(含示例与速查表
经验分享·c#·.net·solr·linq
小羊没烦恼!3 天前
Windows Azure Platform体验(1):Windows Azure
java·大数据·后端·python·flask·word·.net
CSharp精选营4 天前
IIS 后面挂 Kestrel,这 3 个配置错了就 502
kestrel·.net·iis配置