1、WebApiThrottle支持自定义配置各种限流策略。可以根据不同场景配置多个不同的限制,比如授权某个IP每秒、每分钟、每小时、每天、每周的最大调用次数。 这些限制策略可以配置在所有请求上,也可以单独给每个API接口去配置。
//WebApiConfig 增加
config.MessageHandlers.Add(new ThrottlingHandler()
{
Policy = new ThrottlePolicy(
perSecond: 1 //可选参数 每秒限制次数
, perMinute: 20 //可选参数 每分钟限制次数
, perHour: 200 //可选参数 每小时限制次数
, perDay: 1500 //可选参数 每天限制次数
, perWeek: 3000 //可选参数 每周限制次数
)
{
IpThrottling = true, //该值指示是否启用IP限制
ClientThrottling = true //该值指示是否启用客户端限制
},
Repository = new CacheRepository(),
//QuotaExceededMessage = JsonConvert.SerializeObject(json.msg),
QuotaExceededContent = (l, obj) => //违反限流事件
{
//var json = new JsonResult { code = 0, msg = $"超出规定的频率了,{l}{obj}" };
var json=new { code = 0, msg = $"超出规定的频率了,{l}{obj}" };//匿名Json
return (json);
}
});