0

我正在尝试在 ASP.NET MVC 中实现一些东西,我可以让每个用户每n分钟执行一次操作。

我遇到过诸如 Timer 之类的控件,但不太确定要使用什么。我希望这样当用户执行操作时,计时器开始倒计时,例如从 3 分钟到 0:00。3 分钟过后,用户将能够再次执行该操作。

有什么想法可以实现这一目标吗?我需要定时器控件吗?

4

4 回答 4

1

实现这一点最优雅的方法是实现像Quartz.NET这样的作业调度程序并定义正确的作业(必须做什么)和正确的触发器(何时/多久必须完成)。使用 Quartz,您还可以实现更复杂的条件(“每周一做”等)。

希望它会有所帮助。

于 2013-05-22T22:22:47.073 回答
1

这里有一个完美的解决方案:Best way to implement request throttling in ASP.NET MVC? 由 SO 团队创建。

基本上,这个想法是将每个用户的页面命中存储在缓存中,然后根据您的逻辑响应请求。

于 2013-05-22T20:56:18.207 回答
1

最简单的方法是保存会话中最后一个操作的时间,并在后续请求中检查它是否超过 3 分钟。例如:

public ActionResult DoSomething(){
     if (Session["LastAction"] == null || (DateTime.Now - (DateTime)(Session["LastAction"])).Minutes > 3){
          // do action
          Session["LastAction"] = DateTime.Now;
          return View("OK. action executed");
     }
     else{
          return View("Please wait");
     }
}
于 2013-05-22T20:57:32.523 回答
1

您可以使用 jquery-timer http://code.google.com/p/jquery-timer/

基本用途是禁用按钮,调用计时器,然后在完成时重新启用按钮。

但是,如果您想在此期间回帖,这将行不通。

于 2013-05-22T21:02:34.220 回答