我坚持如何解决我遇到的问题。我希望用户从下拉列表中更改存储到数据库的值。经过一段时间(比如1小时)后,我希望将值重置为默认值。我是否必须编写一个位于服务器上的服务,并在值发生变化时被激活?字面上不知道从哪里开始,因此寻找解决方案。
答案 0 :(得分:2)
这听起来像Revalee的完美用例。 Revalee是一个开源项目,它是一种允许您为Web应用程序安排回调的服务。 Revalee使用Windows服务管理任务持久性和调度,但利用您的ASP.NET MVC应用程序来处理所需的处理(在您的情况下重置数据库值)。
要使用Revalee,您会:
在服务器上安装Revalee Service(Windows服务)。 Windows服务可以在源代码中找到(您可以自行编译),可以使用Revalee website中提供的预编译版本,也可以通过Chocolatey轻松安装。
在Visual Studio项目中使用Revalee客户端库。客户端库可以在源代码中找到(您可以自己编译)或通过NuGet提供的预编译版本。
要注册回调(在此示例中使用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);
}
当在一小时内回调Reset
操作(包含用户的ID)时,您的应用程序会将该用户的存储值重置为其首选默认值。
Revalee项目网站提供了完整的API参考资料以及有关如何安装和配置Windows服务的说明。
我希望这会有所帮助。祝你好运!
免责声明:我是参与Revalee项目的开发人员之一。但需要明确的是,Revalee是免费的开源软件。源代码可在GitHub上找到。
答案 1 :(得分:0)
我可能会在记录中添加一个字段,该记录具有一个日期时间,用于存储项目更改的日期。然后定期运行批处理作业,从而获取自上次运行时间以来已过期的记录,然后将其更改回来。