如何在经过一段时间后重置数据库值ASP.NET MVC C#

时间:2014-07-07 11:07:04

标签: c# asp.net asp.net-mvc timer

我坚持如何解决我遇到的问题。我希望用户从下拉列表中更改存储到数据库的值。经过一段时间(比如1小时)后,我希望将值重置为默认值。我是否必须编写一个位于服务器上的服务,并在值发生变化时被激活?字面上不知道从哪里开始,因此寻找解决方案。

2 个答案:

答案 0 :(得分:2)

这听起来像Revalee的完美用例。 Revalee是一个开源项目,它是一种允许您为Web应用程序安排回调的服务。 Revalee使用Windows服务管理任务持久性和调度,但利用您的ASP.NET MVC应用程序来处理所需的处理(在您的情况下重置数据库值)。

要使用Revalee,您会:

  1. 在服务器上安装Revalee Service(Windows服务)。 Windows服务可以在源代码中找到(您可以自行编译),可以使用Revalee website中提供的预编译版本,也可以通过Chocolatey轻松安装。

  2. 在Visual Studio项目中使用Revalee客户端库。客户端库可以在源代码中找到(您可以自己编译)或通过NuGet提供的预编译版本。

  3. 要注册回调(在此示例中使用Revalee的客户端库),您将在ASP.NET MVC应用程序中包含类似于以下的方法。当用户最初存储“可重置”值时,将调用此方法:

    private void ScheduleReset(int userId)
    {
        // The callback will be 1 hour from now
        DateTimeOffset callbackTime = DateTimeOffset.Now.AddHours(1.0);
    
        // The callback URL will include the user ID
        Uri callbackUrl = new Uri(
                string.Format(
                        "http://mywebapp.com/Schedule/Reset/{0}",
                        userId
                    )
            );
    
        // Register the callback request with the Revalee service
        RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
    }
    
  4. 当在一小时内回调Reset操作(包含用户的ID)时,您的应用程序会将该用户的存储值重置为其首选默认值。

  5. Revalee项目网站提供了完整的API参考资料以及有关如何安装和配置Windows服务的说明。

    我希望这会有所帮助。祝你好运!

    免责声明:我是参与Revalee项目的开发人员之一。但需要明确的是,Revalee是免费的开源软件。源代码可在GitHub上找到。

答案 1 :(得分:0)

这似乎是一个设计决定,它有多个"对"答案。

我可能会在记录中添加一个字段,该记录具有一个日期时间,用于存储项目更改的日期。然后定期运行批处理作业,从而获取自上次运行时间以来已过期的记录,然后将其更改回来。