Csharp/C#教程:C# 站点IP访问频率限制 针对单个站点的实现方法分享

 站点IP访问频率限制针对单个站点

usingSystem; usingSystem.Collections.Generic; usingSystem.IO; //usingSystem.Linq; usingSystem.Web; //<summary> //IP访问频率控制 //</summary> publicstaticclassIPCacheManager { ///<summary> ///IP缓存集合 ///</summary> privatestaticList<IPCacheInfo>dataList=newList<IPCacheInfo>(); privatestaticobjectlockObj=newobject(); ///<summary> ///一段时间内,最大请求次数,必须大于等于1 ///</summary> privatestaticintmaxTimes=3; ///<summary> ///一段时间长度(单位秒),必须大于等于1 ///</summary> privatestaticintpartSecond=30; ///<summary> ///请求被拒绝是否加入请求次数 ///</summary> privatestaticboolisFailAddIn=false; staticIPCacheManager() { } ///<summary> ///设置时间,默认maxTimes=3,partSecond=30 ///</summary> ///<paramname="_maxTimes">最大请求次数</param> ///<paramname="_partSecond">请求单位时间</param> publicstaticvoidSetTime(int_maxTimes,int_partSecond) { maxTimes=_maxTimes; partSecond=_partSecond; } ///<summary> ///检测一段时间内,IP的请求次数是否可以继续请求 ///和使用 ///</summary> ///<paramname="ip"></param> ///<returns></returns> publicstaticboolCheckIsAble(stringip) { lock(lockObj) { varitem=dataList.Find(p=>p.IP==ip); if(item==null) { item=newIPCacheInfo(); item.IP=ip; item.ReqTime.Add(DateTime.Now); dataList.Add(item); returntrue; } else { if(item.ReqTime.Count>maxTimes) { item.ReqTime.RemoveAt(0); } varnowTime=DateTime.Now; if(isFailAddIn) { #region请求被拒绝也需要加入当次请求 item.ReqTime.Add(nowTime); if(item.ReqTime.Count>=maxTimes) { if(item.ReqTime[0].AddSeconds(partSecond)>nowTime) { returnfalse; } else { returntrue; } } else { returntrue; } #endregion } else { #region请求被拒绝就不需要加入当次请求了 if(item.ReqTime.Count>=maxTimes) { if(item.ReqTime[0].AddSeconds(partSecond)>nowTime) { returnfalse; } else { item.ReqTime.Add(nowTime); returntrue; } } else { item.ReqTime.Add(nowTime); returntrue; } #endregion } } } } } publicclassIPCacheInfo { publicstringIP{get;set;} privateList<DateTime>reqTime=newList<DateTime>(); publicList<DateTime>ReqTime { get{returnthis.reqTime;} set{this.reqTime=value;} } }

上述就是C#学习教程:C# 站点IP访问频率限制 针对单个站点的实现方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/907591.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐