Mit welchem Framework arbeiten Sie? Ich habe einige Hinweise, wenn Sie mit .Net 4.0 entwickeln, wie ich bin.
Wenn Sie Zugriff auf Ihren Computer haben, auf dem Sie Dienste installieren können, würde ich den neuen und verbesserten Workflow-Service für diese Situation verwenden. Was ist nett an ihnen ist, dass Workflows für Minuten, Stunden, Tage, Wochen, Monate usw. "ruhend" bleiben können, bis Verzögerungen Zeiträume zu beenden.
Wenn es sich um einen IIS-Rechner handelt (und wenn das die Route ist, die Sie verwenden möchten), ist es relativ einfach, sie als "Workflow Service" -Projekt / -Lösung in VS 2010 aufzubauen. Von dort aus werden Sie mit einem Designer und mehrere Workflow-Aktivitäten in der Symbolleiste.
Fügen Sie eine Flussdiagramm-Aktivität hinzu, in der Sie Ihre E-Mail-Aktivitäten platzieren können. Das Flussdiagramm ist ideal, weil es alles initialisieren kann, was Sie benötigen, und der Entscheidungsfluss kann rückwärts in die Richtung umleiten (im Gegensatz zur Aktivität mit immer vorwärts bewegter Sequenz). Was Sie mit Ihrer Logik tun müssen, hängt von Ihnen ab, da Ihre Frage nicht viele Details enthält.
Wenn Sie jetzt .Net 3.5 verwenden, würde ich darüber nachdenken, Workflows nicht zu erstellen, da Sie beim Wechsel zu 4.0 migrieren müssen (WF 3.5 ist NICHT kompatibel mit 4.0). Mit Administratorzugriff auf den Computer können Sie einen Windows-Dienst installieren, der einen Zeitgeber enthält, um den Code alle 30 Tage (oder wie auch immer definiert) nach Bedarf auszulösen.
Verwenden Sie Windows Task Scheduler , um Ihre Anwendung auszuführen.
>Wenn Sie dies mit Ihrer ASP.NET-App anstelle einer separaten App tun möchten, haben Sie einige Optionen:
Da Sie möchten, dass es alle 30 Tage anstatt täglich ausgeführt wird, empfehle ich diese Methode der Verwendung einer Zeitplan-Tabelle anstelle von Anwendungsvariablen oder Cache zum Planen von Jobs:
Sie können eine Planungstabelle in Ihrer Datenbank einrichten und prüfen, wann sie in Ihrer global.asax zuletzt aktualisiert wurde. Überprüfen Sie beim Start der Sitzung, ob das aktuelle Datum mehr als 30 Tage beträgt. Wenn dies der Fall ist, rufen Sie eine Methode zum Versenden von E-Mails auf.
Wenn Sie E-Mails versenden, aktualisieren Sie Ihre Tabelle mit dem aktuellen Datum.