我想为我的网站创建一个到期系统,用户付费一段时间,然后他们的帐户到期。我需要的是让它们过期的方法。我想有一个方法可以每天运行一次并禁用任何超过截止日期的用户,但我不知道如何实现它,因为我迄今为止所做的一切都依赖于一个人连接。此代码应独立于访问该网站的人。
编辑:
感谢所有想法。
我想提一下,我无法在SQL服务器上完成所有任务。我还需要移动和修改文件。
这样的事情:
public void checkExpire()
{
// much more code to check the expiration goes here
if (DateTime.Now == expiration)
{
MembershipUser user = Membership.GetUser();
user.IsApproved = false;
Membership.UpdateUser(user);
File.Move(Request.PhysicalApplicationPath + "logs\\" + user.UserName + ".xml", Request.PhysicalApplicationPath + "logs\\disabled\\" + user.UserName + ".xml");
File.Move(Request.PhysicalApplicationPath + "reps\\" + user.UserName + ".xml", Request.PhysicalApplicationPath + "reps\\disabled\\" + user.UserName + ".xml");
email mail = new email("", true);
mail.sendMail(user.UserName, "Dear user, \n\nYour account has been disabled. None of your data has been lost.\nIf you believe this was a mistake please contact the administrator", "Account Disabled");
Response.Redirect("/Restricted/Members.aspx");
}
}
我在看Quartz.net,是否允许我这样做?
解决:
感谢Chris Marisic,他推荐了Quartz.net。它允许我以任何我想要的间隔开始自定义事件。对于asp net,我创建了一个只有管理员可以看到的按钮才会启动该事件。石英网站上的教程#3主要是我使用的。
答案 0 :(得分:2)
这个问题围绕基本任务调度,这是一项非常重要的任务。
我建议您查看Quartz.NET或Sql Server Job Agent,以获得类似于@Nicklamont建议的系统。
答案 1 :(得分:1)
您的数据库中可能有一个表,其中包含用户名,活动状态,到期日期列。在对用户进行身份验证的同时,请检查其帐户是否仍在使用此表。
在方法中,你说你每天跑一次。检查所有具有当天到期日期的帐户,并将活动字段设置为false。
希望给你一些想法,GL
答案 2 :(得分:1)
在数据库中创建SQL作业。每晚运行。
您可以选择,更新或删除所需的所有不良用户。
它独立于C#代码,并且它非常快,因为它将在SQL服务器上运行。
How to: Create a Transact-SQL Job Step (SQL Server Management Studio)
答案 3 :(得分:0)
编写控制台应用程序以进行检查。如果您可以访问服务器的计划任务,请将其添加到运行中,但这通常是您喜欢的。如果您不知道如何创建控制台应用程序,请参阅MSDN教程:
http://msdn.microsoft.com/en-us/library/0wc2kk78%28v=vs.90%29.aspx