继续在后台ASP.NET中运行代码

时间:2013-07-17 14:44:21

标签: c# asp.net vb.net multithreading scheduling

我需要在后台每15秒运行一次代码,这对服务器没有影响。

我有一张拍卖数据样本表。

--------------------------------------------------------------
AID           STARTDATE               ENDDATE
-------------------------------------------------------------
1             18-7-2013 12:00 PM     20-7-2013 12:00 PM
2             19-7-2013 12:00 PM     21-7-2013 12:00 PM
3             19-7-2013 01:00 PM     21-7-2013 12:00 PM
4             19-7-2013 01:00 PM     22-7-2013 12:00 PM

我需要检查表格,以获取当前日期大于开始日期的项目, 然后我将通过本地数据库中的拍卖商店的Web请求获取数据,它将每15秒循环一次,直到当前日期大于enddate。 一段时间2拍卖同时开始,然后我需要同时运行两个线程。

对于当前正在运行拍卖模式并存储在我们的数据库中的所有项目,每15秒获取一次更新的最佳方法是什么?

提前谢谢你......

2 个答案:

答案 0 :(得分:1)

您无法在ASP.NET / IIS中可靠地执行此操作。默认情况下,整个过程直到收到来自Web服务器的第一个请求才开始,然后整个过程在指定的非活动时间(通常为20分钟)后关闭。如果您需要每15秒运行一个进程,则必须每15秒从客户端初始化一个请求,最有可能使用某种javascript来执行请求。

最佳解决方案是使用与网站分开的Windows服务更新您的拍卖数据库。

答案 1 :(得分:0)

您在哪里托管您的网站?如果您在自己的服务器上,请创建一个cron作业,每15秒向您的后端发出一次请求。

如果您使用云提供商(或没有“云”标语的提供商),他们可能会提供cron作业功能。但它们很少让你实现15秒的间隔,如果它来自不同的站点,一些提供商可能会将其解释为DOS攻击。