博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
控制ASP.NET Web API 调用频率
阅读量:6484 次
发布时间:2019-06-23

本文共 555 字,大约阅读时间需要 1 分钟。

很多的api,例如GitHub’s API 都有流量控制的做法。使用速率限制,以防止在很短的时间量客户端向你的api发出太多的请求.例如,我们可以限制匿名API客户端每小时最多60个请求,而我们可以让更多的经过认证的客户端发出更多的请求。那么asp.net webapi如何实现这样的功能呢?在项目WebApiContrib 上面已经有了一个实现: ,具有良好的可扩展性。

最简单的方法是使用ThrottlingHandler注册使用简单的参数,例如控制每个用户每小时60个请求:

config.MessageHandlers.Add(new ThrottlingHandler(    new InMemoryThrottleStore(),      id => 60,     TimeSpan.FromHours(1)));

IThrottleStore接口 使用ID +当前的请求数量。InMemoryThrottleStore 只有一个内存中存储,但你可以轻松地扩展实现为分布式缓存或数据库。还可以轻松地自定义ThrottlingHandler的行为,例如我们针对一个ip地址可以更好的进行控制。

本文来自云栖社区合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

转载地址:http://cgsuo.baihongyu.com/

你可能感兴趣的文章
WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
查看>>
【C#】VS2012+InstallShield2013制作软件更新包
查看>>
习题 8: 打印,打印
查看>>
【项目管理】老板与客户意见冲突怎么办?
查看>>
go defer性能测试
查看>>
产品经理十八章:产品创新能力(二)
查看>>
分布式之消息队列复习精讲
查看>>
设计模式五: 原型模式(Prototype)
查看>>
重磅!阿里巴巴和全球最大奢侈品电商YNAP成立合资公司
查看>>
使用kotlin遇到的问题
查看>>
JavaScript高级程序设计学习(六)之设计模式
查看>>
10张图带你深入理解Docker容器和镜像(真棒)
查看>>
ProxySQL MySQL MGR8配置
查看>>
Windbg内核调试之四: Dump文件分析
查看>>
Node.js + Express + handlebars搭建个人网站(1)
查看>>
开源大数据周刊-第103期
查看>>
php 查询数据库返回json数据
查看>>
javascript高程3 学习笔记(二)
查看>>
通用的启动参数获取getopt
查看>>
透彻理解Spring事务设计思想之手写实现
查看>>