最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

asp.net实现拒绝频繁的IP访问的方法

来源:动视网 责编:小采 时间:2020-11-27 22:37:50
文档

asp.net实现拒绝频繁的IP访问的方法

asp.net实现拒绝频繁的IP访问的方法:本文实例讲述了asp.net实现拒绝频繁的IP访问的方法。分享给大家供大家参考,具体如下: 首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using System.Web; usi
推荐度:
导读asp.net实现拒绝频繁的IP访问的方法:本文实例讲述了asp.net实现拒绝频繁的IP访问的方法。分享给大家供大家参考,具体如下: 首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using System.Web; usi


本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《asp.net文件操作技巧汇总》、《asp.net ajax技巧总结专题》及《asp.net缓存操作技巧总结》。

希望本文所述对大家asp.net程序设计有所帮助。

文档

asp.net实现拒绝频繁的IP访问的方法

asp.net实现拒绝频繁的IP访问的方法:本文实例讲述了asp.net实现拒绝频繁的IP访问的方法。分享给大家供大家参考,具体如下: 首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using System.Web; usi
推荐度:
标签: ip 实现 ASP.NET
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top