我正在 ASP.net(C#)开发一个网站,并且有以下要求:
网站应每晚从RSS Feed中获取数据,执行一些计算并使用计算值更新数据库。如何在共享托管环境中实现此目的?
我通常得到的答案是有一个Windows服务可以执行此操作,但我无法使用此服务,因为我无法在共享托管环境中运行Windows服务。
我找到的另一个替代方法是使用HttpRuntime.Cache,如http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
中所述然而,这种方法似乎有很多缺点。 还有其他方法吗?
答案 0 :(得分:3)
在某些(大多数?)共享托管服务提供商,至少我使用的那些,它们允许您通过其控制面板安排任务。我知道discountasp.net和rackspace也是如此。
如果您的提供商确实具有该功能,请在指定时间调用/加载某个asp.net网页,并开展工作。对于很多小任务来说,这将是阻力最小的路径。
如果它不提供该功能,并且您不愿意切换提供程序,则可以始终从不在ISP的计算机上运行计划任务(使用Windows服务器中的内置计算机),因为你可以从它到达数据库。我过去也使用过这种方法。任何在正确的时间可靠开启的机器都可以。
答案 1 :(得分:1)
Windows计划任务:
如果您没有任何专用资源,则无法在共享主机中使用。非常有限。
使用像Windows计划任务和控制面板功能这样的黑客不是很好的解决方案。他们大部分时间都很糟糕,这些年来我们很头疼。
安排网络服务:
您可以在共享托管中使用ATrigger日程安排服务。 .Net library也可用于创建计划任务而无需开销。
免责声明:我是ATrigger团队的一员。这是一个免费软件,我没有任何商业目的。