如何在global.asax里封杀 请求太频繁的IP

怎么在global.asax里封杀 请求太频繁的IP?
怎么在global.asax里封杀 请求太频繁的IP?
------解决思路----------------------
1. 取得IP
2. 在黑名单里查询是否存在一个IP与之相符。如果存在,则
   2.1 服务器重定向到 http://www.google.com 去


如果不会从 HttpContext 获得客户端 IP,请去学习 asp.net。
如果不会访问数据库,请去学习 sql 知识,以及 ado.net。
如果不会 HttpContext 服务器重定向,请去学习 asp.net。
------解决思路----------------------
 
//请求信息
    public class VisitItem
    {
        public string IP { get; set; }
        public DateTime VisitTime { get; set; }
    }
    public class VisitValidate
    {
        //缓存请求的IP及时间列表
        public static List<VisitItem> VisitItems = new List<VisitItem>();
        //判断是否频繁访问
        public static bool IsFrequent(string ip)
        {
            VisitItems.Add(new VisitItem() { IP = ip, VisitTime = DateTime.Now });
            //清空多余的缓存记录,只取最近十次访问
            var list = VisitItems.Where(m => m.IP.Equals(ip)).ToList();
            while (list.Count > 10)
            {
                list.RemoveAt(0);
            }
            //找到list中的最大最小时间,以计算最近十次请求的时间间隔
            DateTime dmin = VisitItems.Min(m => m.VisitTime);
            DateTime dmax = VisitItems.Max(m => m.VisitTime);
            int span = (dmax - dmin).Milliseconds;
            //如果平均间隔在100毫秒认为过于频繁
            if (span / list.Count > 100)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }