Asp.net mvc 3 MVC3事务计数器

Asp.net mvc 3 MVC3事务计数器,asp.net-mvc-3,Asp.net Mvc 3,我想计算从数据库(SQL Server)检索某些报告的事务数。我使用EF4.1进行数据库交互,使用MVC3进行客户端交互 任何人都可以建议最好的方式去做和放置(在控制器或在reposity服务等) 我想限制用户每小时最多100个事务。在此限制之后,我会锁定用户并注销。提前谢谢 我可能会在mvcapapplication类的RegisterGlobalFilters方法中查找一个可以全局应用(跨所有控制器)的ActionFilterAttribute。比如: public class Filter

我想计算从数据库(SQL Server)检索某些报告的事务数。我使用EF4.1进行数据库交互,使用MVC3进行客户端交互

任何人都可以建议最好的方式去做和放置(在控制器或在reposity服务等)


我想限制用户每小时最多100个事务。在此限制之后,我会锁定用户并注销。提前谢谢

我可能会在
mvcapapplication
类的
RegisterGlobalFilters
方法中查找一个可以全局应用(跨所有控制器)的
ActionFilterAttribute
。比如:

public class FilterTrafficAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Log and track visitor count for the hour here, and decide if they
        // should proceed on or not.
        // You can also change the ActionResult of the request by altering the
        // filterContext.Result.
    }
}
然后在
mvcapapplication
中:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandlerErrorAttribute());

    // add this line:
    filters.Add(new FilterTrafficAttribute());
}

然后你要确保它适用于所有电话,并且有很强的处理能力。您可能会对其他覆盖感兴趣,这显然是业务逻辑,因此“操作”(决策)需要在您的业务逻辑层中

在数据库中,保留一个每天消耗配额的表,并在用户每次执行计数操作(例如检索特定报告或写入数据库)时更新该表。也就是说,您的业务逻辑包含每个此类操作更新消耗配额计数器的说明

在业务层中添加验证逻辑,该逻辑读取用户的消耗配额,并且仅在未达到该用户的每日配额时进行验证(即,允许)


如有必要,请每天清理配额,但您可能希望保留配额用于会计目的。

我不确定是否理解这个问题。是否要计算用户执行的查询数,或对数据库的写入数?请选择其中任何一项。我实际上是从大型机中检索信息,并在每次用户请求时将其放入SQL数据库。所以现在我想限制用户每小时最多检查100个来自大型机的报告(因此使用SQL)。这个配额是:每用户每小时100个。因此,每次我转到SQL添加报表时,我都需要更新计数器以及进行该事务的时间。然后检查最后100笔交易的时间?我过得好吗??)这取决于你如何定义“每小时”。到底是在1到2之间,然后又是在2到3之间,还是每60分钟有100份报告?然后,只需检索过去60分钟内消费的项目数(因此,时间戳小于60分钟)。如果数字小于100,则可以允许事务通过。当事务通过时(在业务逻辑中),它将事务记录在该表中。它是每60分钟100个报告。所以我需要为每个用户的每个事务添加新的表到日志报告id和日期时间。我在用户进行新事务后更新报告表,因此无法使用报告计数。我也是ActionFilters的忠实粉丝。但我不能在这里使用它。在检索报告期间,我会尝试在新表中记录时间。