每30天运行一次C#代码

7
如果我想要在我的网站上每30天向用户运行一些代码,比如发送电子邮件,应该怎么做呢?
5个回答

19

4

1
你正在使用哪个框架?如果你像我一样在开发 .Net 4.0,我有一些指针可以提供给你。
如果你可以访问你的机器并安装服务,我建议你在这种情况下使用新的和改进的工作流服务。它们的好处是工作流可以持续几分钟、几小时、几天、几周、几个月等待“休眠”,直到延迟时间结束。
如果它是一个 IIS 机器(如果你想采取这条路),在 VS 2010 中将其直接构建为“工作流服务”项目/解决方案相对简单。从那里,你会看到一个设计师和几个工作流活动在工具栏中。
添加一个流程图活动来放置你的电子邮件活动。流程图非常理想,因为它可以初始化你需要的任何内容,并且决策流可以向后重定向(与始终向前移动的序列活动相反)。从那里开始,你需要根据你的逻辑自行决定,因为你的问题没有提供太多细节。

如果您正在使用 .Net 3.5,那么我建议您不要构建工作流程,因为在切换到4.0时需要进行迁移(WF 3.5与4.0不兼容)。如果您拥有机器的管理员访问权限,则可以安装一个Windows服务,其中包含一个定时器,以根据需要每30天(或其他定义)触发代码。


@Soeren,关键在于你不能可靠地从asp.net工作进程/IIS触发事件。你需要使用Windows服务。 - StingyJack

1
如果是针对SQL Server的,您可以使用SQL Jobs

1

如果您想在ASP.NET应用程序中完成而不是使用单独的应用程序,您有一些选项:

由于您希望它每30天运行一次而不是每日运行,我推荐使用调度表而不是应用程序变量或缓存来安排任务的方法:

您可以在数据库中设置一个计划表,并在global.asax中检查上次更新时间。在Session启动时,检查当前日期是否超过30天。如果是,则调用一个方法发送电子邮件。

如果发送电子邮件,则使用当前日期更新您的计划表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接