没有活动连接的运行方法

时间:2011-07-06 18:18:28

标签: c# .net asp.net sql asp.net-membership

我想为我的网站创建一个到期系统,用户付费一段时间,然后他们的帐户到期。我需要的是让它们过期的方法。我想有一个方法可以每天运行一次并禁用任何超过截止日期的用户,但我不知道如何实现它,因为我迄今为止所做的一切都依赖于一个人连接。此代码应独立于访问该网站的人。

编辑:

感谢所有想法。

我想提一下,我无法在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主要是我使用的。

4 个答案:

答案 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