2011-07-06 4 views
2

私は自分のウェブサイトの有効期限を作成したいと考えています。ユーザーは一定期間支払いを行い、アカウントの有効期限が切れます。私が必要とするのは、それらを期限切れにする方法です。私は毎日1回実行され、有効期限を過ぎたユーザーは無効にする方法を考えていましたが、実装方法はわかりません。これまでに行ってきたことはすべて、接続する人に依存しているからです。このコードはサイトを訪れる誰かから独立しているべきです。アクティブな接続がないメソッドを実行する

編集:アイデアのすべてのための

感謝。

私は、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を見ていたに、それは私がそれを行うことができますか?

解決済み:

Quartz.netのおかげでChris Marisicに感謝します。それは私が望む任意の間隔でカスタムイベントを開始することを可能にしました。 aspネットのために、管理者だけが見ることができるボタンを作成しました。それはイベントを開始します。クォーツのウェブサイトのチュートリアル#3は主に私が使ったものでした。

+0

なぜあなたはそれを行う必要がありますか?アカウントが作成されたら、最後にアカウントが更新されたときにタイムスタンプを保存できませんか?また、アカウントのアクティブ期間を定義する関連するアカウントタイプを使用することもできます。 –

+0

私はプレーンな古いフォーム認証を使用しているので、xmlファイルにいくつかのものが格納されています。タイムアウトが切れたときにタイムスタンプを格納します。 –

+0

代わりに更新されたときにタイムスタンプを保存することはできませんか?次に、アカウントが古いかどうかを判断する別の "ルール"を設定することができます。なぜデータベースに格納しないのですか?この情報のために別のデータベーステーブルを作成することができます。 –

答えて

2

この質問は、実装するための非自明なタスクである基本的なタスクのスケジューリングを中心に展開:コンソールアプリケーションを作成する方法がわからない場合は、ここではMSDNのチュートリアルです。

@Nicklamontの提案と同様のシステムを実現するには、Quartz.NETまたはSql Server Job Agentを使用することをお勧めします。

+1

Quartz.netは私が探していたものでした。ありがとうございました! –

+0

私は正しい方向にあなたを指差すことができてうれしいアダム!このようなコメントを得ることは、私がSOの質問に答える時間を取る理由です。 –

1

これには、ユーザ名、有効期限、有効期限の列を持つテーブルをDBに置くことができます。ユーザーを認証するとともに、このテーブルでアカウントが有効であることを確認します。


この方法では、1日1回実行するとします。その日の有効期限のあるアカウントをすべて確認し、アクティブなフィールドをfalseに設定します。屋にいくつかのアイデアを与える


希望、GL

1

は、データベース内のSQLジョブを作成します。毎晩それを実行します。
あなたが望む悪いユーザーをすべて選択、更新、または削除することができます。 これはC#コードとは独立しており、SQLサーバー上で実行されるため非常に高速です。

How to: Create a Transact-SQL Job Step (SQL Server Management Studio)

+0

良い解決策、これは私が自分自身を調べる必要があるものです.. –

関連する問題