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

测试结果

相关推荐
足球中国9 小时前
.net DataExcel控件 2.11.1.53版发布
c#·.net·excel
rockey62719 小时前
C#脚本引擎之AScript与Jurassic、Jint对比
javascript·c#·.net·js·script·动态脚本
界面开发小八哥1 天前
界面控件DevExpress WinForms中文帮助文档 - 入门指南
ai·c#·.net·devexpress·ui开发·winforms
清风与日月1 天前
Yitter.IdGenerator:高性能分布式唯一ID生成器详解
分布式·c#·.net·.netcore
大鹏说大话1 天前
用 Semantic Kernel 在 .NET 中构建你的第一个 AI 智能体(Agent)
人工智能·.net
七仔啊1 天前
C#、.NET 、ASP.NET Core、Visual Studio全系列快速入门
c#·asp.net·.net
超龄超能程序猿1 天前
实战优化:.NET 8 容器 Debian 源+时间同步企业级 Dockerfile
运维·debian·.net
一个帅气昵称啊2 天前
.Net C# AI智能体开发-快速开始
开发语言·c#·.net
kyle~2 天前
.NET 软件开发平台
.net
一个帅气昵称啊2 天前
.Net C# AI智能体开发-AI智能体
人工智能·c#·.net