ASP.NET Web API 控制请求频率

参考地址:http://www.cnblogs.com/shanyou/p/3194802.html

安装nuget包:WebApiContrib

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

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

config.MessageHandlers.Add(new ThrottlingHandler(
    new InMemoryThrottleStore(),
     id => 60,
    TimeSpan.FromHours(1)));
IThrottleStore接口 使用ID +当前的请求数量。InMemoryThrottleStore 只有一个内存中存储,但你可以轻松地扩展实现为分布式缓存或数据库。还可以轻松地自定义ThrottlingHandler的行为,例如我们针对一个ip地址可以更好的进行控制。
config.MessageHandlers.Add(new ThrottlingHandler(
             new InMemoryThrottleStore(),
             id =>
             {
                 if (id == "10.0.0.1")
                 {
                     return 5000;
                 }
                 return 60;
             },
             TimeSpan.FromHours(1)));
				
时间: 2024-10-13 16:19:50

ASP.NET Web API 控制请求频率的相关文章

ASP.NET Web API 记录请求响应数据到日志的一个方法

原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个方法 REST风格的服务架构已经成为越来越多人的选择,之前我用过WCF来实现REST服务,WCF是一个很强大的框架,干这点小事有点太沉重的感觉.后来微软又推出了一个ASP.NET Web API,专门用来处理一些基本的Http服务,即灵活又简单,推荐大家都看看. 今天这篇文章是使用ASP.NET W

新作《ASP.NET Web API 2框架揭秘》开始全面接受预订

我觉得大部分人都是"眼球动物",他们关注的往往都是目光所及的东西.对于很多软件从业者来说,他们对看得见(具有UI界面)的应用抱有极大的热忱,但是对背后支撑整个应用的服务却显得较为冷漠.如果我们将整个"生态系统"比喻成海面上漂浮的冰山,我们所能看的到的只是露出水面的冰山一角,水面之下才是一个"庞然大物". 提到服务,我们自然想到Web Service.但是传统意义上的Web Service却有点名不副实,因为支撑它的其实不是Web而是SOAP,承载

ASP.NET Web API 2框架揭秘

ASP.NET Web API 2框架揭秘(.NET领域再现力作顶级专家精讲微软全新轻量级通信平台) 蒋金楠 著   ISBN 978-7-121-23536-8 2014年7月出版 定价:108.00元 732页 16开 编辑推荐 √ 这是一本注重实证的书,功能各异.多达120个可供下载的示例,大量最佳实践与实用性扩展,可直接用于解决实际开发问题. √ 全新的学习方法,通过完整论证来实现彻底的融会贯通. √ 本书可以作为讲设计架构的书来读,因为其以经过长期检验的经典架构作为学习素材,可很好地启

ASP.NET Web API 路由 (上)

1 什什么是ASP.NET Web API 路由 ASP.NET Web路由其实就是一个抽象的消息处理管道,ASP.NET Web API的路由机制不同于ASP.NET的路由机制,但是与ASP.NET的路由有着相似的一套设计. 2 ASP.NET Web API 请求和响应的相关对象 ASP.NET Web API的请求是通过HtppRequestMessage作为管道来处理请求的消息,通过HtppReponseMessage作为管道来处理响应的消息.也就是ASP.NET Web API处理用户

控制ASP.NET Web API 调用频率

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

控制ASP.NET Web API 调用频率与限流

ASP.NET MVC 实现 https://github.com/stefanprodan/MvcThrottle ASP.NET WEBAPI 实现 https://github.com/stefanprodan/WebApiThrottle   Refer: Throttling ASP.NET Web API calls http://blog.maartenballiauw.be/post/2013/05/28/Throttling-ASPNET-Web-API-calls.aspx

如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的.比如有的浏览器只能发送

水煮 ASP.NET Web API(1-3)如何接收 HTML 表单请求

问题 我们想创建一个能够处理 HTML 表单的 ASP.NET Web API 应用程序(使用 application/x-www-form-urlencoded 方式提交数据). 解决方案 我们可以创建一个 Controller Action 接收一个 Moddel,Model 的结构和准备从HTML 表单提交的准备处理的结构相似,模型绑定依赖于 ASP.NET Web API 来处理.模型中的属性名字和 HTTP 请求中要用的名字要匹配. public HttpResponseMessage

AngularJS使用OData请求ASP.NET Web API资源的思路

本篇整理AngularJS使用OData请求ASP.NET Web API资源的思路. 首先给ASP.NET Web API插上OData的翅膀,通过NuGet安装OData. 然后,给controller中需要使用OData的Action加上EnableQuery特性,并让Action方法返回IQueryable<T>类型. public class ProductsController : ApiController { // GET: api/Products [EnableQuery(