网站流量异常,不能正常访问,发现是几个IP在不停的刷流量,所以想对IHttpHandler做个扩展,如果是ip.txt里的恶意IP则拒绝访问,如果不是则正常访问页面。设想的类如下,但实现不了。。 public class MyHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get { return true; }
        }
        public void ProcessRequest(HttpContext context)
        {
            string path = context.Server.MapPath("ip.txt");
            StreamReader s = File.OpenText(path);
            string ips = s.ReadToEnd();
            s.Close();
            string[] arrayIPAddress = ips.Split('|');            string cip = context.Request.UserHostAddress;
            foreach (string ip in arrayIPAddress)
            {
                if (cip == ip)
                {
                    return;
                }
            }
}
    }

解决方案 »

  1.   

    在IIS里设置IP黑名单岂不更好?
      

  2.   

    虚拟主机商不允许设置所以只好用程序实现了。
    代码是正确的,可以防止IP访问,但是不在ip.txt里IP访问页面也不能显示内容。所以请教怎么显示原始页面呢?
      

  3.   

    http://www.svnhost.cn/Article/Detail-36.shtmlhttp://www.svnhost.cn/Download/Detail-78.shtml
      

  4.   

    设想的类如下,但实现不了。。 
     foreach (string ip in arrayIPAddress) 
                { 
                    if (cip == ip) 
                    { 
                        return; 
                    } 
    没看到你的禁止访问处理过程啊.
      

  5.   

    to only_endure 
    不知道怎么写了,目的是拒绝ip,怎么实现Response拒绝呢,就是不想返回任何请求资源。
    每个恶意IP每天访问800多万次,一共有数百个恶意IP。如果返回请求资源。。马上就挂掉了。
      

  6.   

    这个我没有做过,但是我想在首页的PAGELOAD里面一开始就检测是否禁用的IP,如果是则连接到别的地方去