ASP.NET MVC - 计时器

时间:2013-05-22 20:52:02

标签: asp.net-mvc timer

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

我遇到过控制器,比如Timer,但不太清楚要使用什么。我希望这样当用户执行动作时,计时器开始倒计时,例如3分钟到0:00。一旦3分钟过去,用户将能够再次执行该操作。

我是如何实现这一目标的?我需要定时器控制吗?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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");
     }
}

答案 2 :(得分:1)

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

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

但是,如果你想在过渡期间回复,这将无效。

答案 3 :(得分:1)

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

希望它会有所帮助。