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

测试结果

相关推荐
~plus~10 小时前
.NET 8 C# 委托与事件实战教程
网络·c#·.net·.net 8·委托与事件·c#进阶
csdn_aspnet12 小时前
在 .NET Core 8 中实现 CORS
.netcore·跨域·cors·.net8
rockey62714 小时前
AScript动态脚本多语言环境支持
sql·c#·.net·script·eval·function·动态脚本
dotNET实验室15 小时前
ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑
.net
龙侠九重天15 小时前
ML.NET 实战:快速构建分类模型
分类·数据挖掘·c#·.net
无风听海17 小时前
.NET10之内置日志配置与使用指南
asp.net·.net
沃尔威武1 天前
数据库 Sinks(.net8)
数据库·.net·webview
大尚来也1 天前
告别“字符串拼接”:在.NET中用LINQ重塑数据查询
.net·solr·linq
无风听海2 天前
.NET10之Record 深度解析
.net
CodeCraft Studio2 天前
LightningChart .NET v12.5.1 发布:高性能数据可视化再升级,赋能工业与实时数据场景
信息可视化·.net·gpu·数据可视化·lightningchart·高性能图表开发·数据可视化引擎