国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net實現拒絕頻繁的IP訪問的方法

2024-07-10 13:30:14
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了asp.net實現拒絕頻繁的IP訪問的方法,涉及asp.net針對訪問IP的判斷及配置文件的設置技巧,需要的朋友可以參考下
 

本文實例講述了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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 承德市| 曲靖市| 莱芜市| 册亨县| 巴东县| 新丰县| 彰武县| 遂川县| 黄骅市| 惠来县| 聂拉木县| 双流县| 霍城县| 彰化市| 中阳县| 新巴尔虎右旗| 汤原县| 德清县| 柳河县| 青川县| 鹤庆县| 沂南县| 香港 | 柯坪县| 浠水县| 尚义县| 蒲城县| 永定县| 古浪县| 东丰县| 竹溪县| 柏乡县| 浮梁县| 塔河县| 张家界市| 阿尔山市| 永嘉县| 修武县| 东台市| 威信县| 辽中县|