您的位置:首页 > 编程语言 > ASP

控制ASP.NET Web API 调用频率

2015-06-17 10:35 603 查看
很多的api,例如GitHub’sAPI都有流量控制的做法。使用速率限制,以防止在很短的时间量客户端向你的api发出太多的请求.例如,我们可以限制匿名API客户端每小时最多60个请求,而我们可以让更多的经过认证的客户端发出更多的请求。那么asp.netwebapi如何实现这样的功能呢?在项目WebApiContrib上面已经有了一个实现:https://github.com/WebApiContrib/WebAPIContrib/blob/master/src/WebApiContrib/MessageHandlers/ThrottlingHandler.cs,具有良好的可扩展性。

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

config.MessageHandlers.Add(newThrottlingHandler(
newInMemoryThrottleStore(),
id=>60,
TimeSpan.FromHours(1)));


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


ThrottlingASP.NETWebAPIcalls
IntroducingASP.NETWebAPIThrottlinghandler
ThrottlingSuiteforWebAPI
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: