如何在Web应用程序上运行后台服务 - DotNetNuke

时间:2011-09-27 11:47:39

标签: c# .net multithreading iis dotnetnuke

我制作了dnn调度程序并设置为每1分钟运行一次。当我在网站上做某事时它会起作用。但是当我不在网站上时,我需要运行一些操作。例如,使用当前时间将记录插入数据库。这可能吗?

3 个答案:

答案 0 :(得分:5)

在主机设置中,使用调度程序模式=计时器方法

Host Settings - Scheduler Mode

这将使调度程序在一个不是由页面请求触发的单独线程中运行。

如果调度程序在计时器方法中运行,则它将无法访问当前的HttpContext

您还必须确保DNN保持活动状态,并且IIS不会因为不活动而关闭应用程序。适当地设置应用程序池空闲超时,并ping /Keepalive.aspx应该处理这个问题。然而,将DNN调度程序用于关键任务并不是一个好主意。

另见:

答案 1 :(得分:1)

如果您只想要与数据库相关的内容(例如插入记录),则可以使用数据库作业。您没有提到您使用的dbms,但几乎每个数据库在不同的名称下都具有几乎相同的功能。

答案 2 :(得分:1)

执行相当于Cron的工作仍然是Windows上的屁股。

如果您不关心它何时运行,DNN计划程序将起作用。您可能需要做的是在您的最终有更多的逻辑...如果它只运行每10分钟,或每小时或任何您可能需要查看数据库表,确定它上次运行,然后做它需要的任何事情做'赶上'。在您的情况下,每分钟添加60分钟的信息。

我很难想到一个例子,说明为什么我会每分钟或某个时间间隔写一个表。如果我需要它来连接表或方便报告的东西,你应该用更大的块生成它们。

另一个选择是编写一个小的.NET Windows服务,这个服务并不难,并且每分钟运行一次。那会更可靠。