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

测试结果

相关推荐
light blue bird20 小时前
主子端台二分法任务汇总组件
前端·数据库·.net·桌面端winform
rockey6271 天前
基于AScript的python3脚本语言发布啦!
python·c#·.net·script·python3·eval·expression·function·动态脚本
TeamDev1 天前
如何在 DotNetBrowser 中使用本地 AI 模型
前端·后端·.net
唐青枫1 天前
内存为什么越来越高?C#.NET GC 详解:分代回收、LOH、终结器与性能优化实战
c#·.net
日落飞雪1 天前
重塑 .NET 国际化工作流:时光恒Net多语言生成系统,让出海更简单
.net
日落飞雪1 天前
从 .NET 11 到 ARM64:时光恒Net 系统 v1.06 进化全纪实,定义自动化翻译新高度!
.net·wpf开发·net国际化·net本地化·net多语言
rockey6272 天前
AScript之eval函数详解
c#·.net·script·eval·expression·动态脚本
周杰伦fans3 天前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
宝桥南山3 天前
GitHub Models - 尝试一下使用GitHub Models
microsoft·ai·微软·c#·github·.netcore
William_cl3 天前
【C#/.NET 进阶】ASP.NET 架构与最佳实践:DI 依赖注入(IoC 核心)从入门到避坑
c#·asp.net·.net