温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

asp.net中怎么禁止频繁的IP访问

发布时间:2021-07-15 16:30:08 来源:亿速云 阅读:466 作者:Leah 栏目:开发技术

asp.net中怎么禁止频繁的IP访问,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

首先我们要实现 IHttpModule接口

using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; using System.Web.SessionState; using System.Configuration; namespace MyHttp {   public class UrlReWrite : IHttpModule   {     /// <summary>     /// 单个IP最大连接限制数量     /// </summary>     private int rowCount = Convert.ToInt32(ConfigurationSettings.AppSettings["HttpRowCount"]);     /// <summary>     /// 指定区域时间范围 单位分     /// </summary>     private int httpTime = Convert.ToInt32(ConfigurationSettings.AppSettings["HttpTime"]);     public void Init(HttpApplication application)     {       application.BeginRequest += (new          EventHandler(this.Application_BeginRequest));       application.EndRequest += (new          EventHandler(this.Application_EndRequest));     }     private void Application_BeginRequest(Object source, EventArgs e)     {       HttpApplication Application = (HttpApplication)source;       HttpContext ctx = Application.Context;       //IP地址       string isIp = ctx.Request.UserHostAddress;       if (ctx.Application["time"] == null)       {         ctx.Application["time"] = DateTime.Now;       }       else       {         DateTime isTime = (DateTime)ctx.Application["time"];         int timeTract = Convert.ToInt32(DateTime.Now.Subtract(isTime).Minutes.ToString());         if (timeTract > (httpTime - 1))         {           ctx.Application["time"] = null;           ctx.Application["myip"] = null;         }       }       if (ctx.Application["myip"] != null && ctx.Application["myip"] is CartIp)       {         CartIp cartIp = (CartIp)ctx.Application["myip"];         cartIp.Insert(isIp);         ctx.Application["myip"] = cartIp;         if (cartIp.GetCount(isIp) > rowCount)         {           ctx.Response.Clear();           ctx.Response.Close();         }       }       else       {         CartIp cartIp = new CartIp();         cartIp.Insert(isIp);         HttpContext.Current.Application["myip"] = cartIp;       }     }     private void Application_EndRequest(Object source, EventArgs e)     {     }     public void Dispose()     {     }   } }

ListIp 类

using System; using System.Collections.Generic; using System.Text; namespace MyHttp {   [Serializable]   public class ListIp   {     private string ip;     private int count;     /// <summary>     /// IP地址     /// </summary>     public string IP     {       get { return ip; }       set { ip = value; }     }     /// <summary>     /// 累加数量     /// </summary>     public int Count     {       get { return count; }       set { count = value; }     }   }   [Serializable]   public class CartIp   {     public CartIp()     {       if (_listIp == null)       {         _listIp = new List<ListIp>();       }     }     private List<ListIp> _listIp;     public List<ListIp> _ListIp     {       get { return _listIp; }       set { _listIp = value; }     }     /// <summary>     /// 添加IP     /// </summary>     public void Insert(string ip)     {       int indexof = ItemLastInfo(ip);       if (indexof == -1)       {         //不存在         ListIp item = new ListIp();         item.IP = ip;         _listIp.Add(item);       }       else       {         _listIp[indexof].Count += 1;       }     }     //判断IP是否存在     public int ItemLastInfo(string ip)     {       int index = 0;       foreach (ListIp item in _ListIp)       {         if (item.IP == ip)         {           return index;//存在         }         index += 1;       }       return -1;//不存在     }     /// <summary>     /// 获得IP的数量     /// </summary>     /// <param name="ip"></param>     /// <returns></returns>     public int GetCount(string ip)     {       foreach (ListIp item in _ListIp)       {         if (item.IP == ip)         {           return item.Count;//存在         }       }       return -1;//不存在     }   } }

在web.config 配置访问规则

<appSettings> <add key="HttpRowCount" value="100"/> <add key="HttpTime" value="10"/> </appSettings> <system.web>   <httpModules>   <add name="UrlReWrite" type="MyHttp.UrlReWrite"/>  </httpModules> </system.web>

看完上述内容,你们掌握asp.net中怎么禁止频繁的IP访问的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI