如何限制asp.net中每个IP的搜索次数

时间:2012-07-17 21:00:06

标签: asp.net

我想限制我在asp.net网站上可以进行的搜索次数。此外,当超过最大数量时,必须重置此计数。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

此问题有1001种方法。一种方法是使用数据库表来跟踪查询,至少包含2个字段:date和ip(我会将实际查询添加为第三个字段,可能还会添加(登录)用户的用户ID)做查询)。然后,您可以轻松获取每个IP的计数(每天/每周/每月/每年/等),甚至可以由用户(确保您创建正确的索引!),然后再执行搜索查询,然后通知用户他们已经超过他们的配额。作为奖励,您可以获得搜索历史(按日期和IP,甚至可能是用户),您可以使用它来进一步分析(搜索次数最多的关键字,最活跃的用户/ IP等)。

您还可以采用其他方法,例如将IP的+计数器保存在内存中(如Dictionary<ip, int>),甚至可能存储在memcached或仅在应用程序范围内等等。这些方法无数,需要适合您的要求(您根本没有指定)。

重置计数可以像将计数器设置为0(通过用户界面)一样简单,例如, MyQueryDictionary[userip] = 0或“复杂”作为“提高数据库表中特定IP的阈值”以及介于两者之间的所有内容。