茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    asp.net實現(xiàn)拒絕頻繁的IP訪問的方法
    來源:易賢網(wǎng) 閱讀:1752 次 日期:2016-08-09 16:20:12
    溫馨提示:易賢網(wǎng)小編為您整理了“asp.net實現(xiàn)拒絕頻繁的IP訪問的方法”,方便廣大網(wǎng)友查閱!

    本文實例講述了asp.net實現(xiàn)拒絕頻繁的IP訪問的方法。分享給大家供大家參考,具體如下:

    首先我們要實現(xiàn) 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最大連接限制數(shù)量

        /// </summary>

        private int rowCount = Convert.ToInt32(ConfigurationSettings.AppSettings["HttpRowCount"]);

        /// <summary>

        /// 指定區(qū)域時間范圍 單位分

        /// </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>

        /// 累加數(shù)量

        /// </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的數(shù)量

        /// </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 配置訪問規(guī)則

    <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程序設(shè)計有所幫助。

    更多信息請查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機網(wǎng)站地址:asp.net實現(xiàn)拒絕頻繁的IP訪問的方法

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)