如何在没有用户交互的情况下在ASP.NET中启动任务
本文关键字:NET ASP 启动 任务 情况下 交互 用户 | 更新日期: 2023-09-27 18:20:15
我正在构建一个需要持续监控的网站,这样我们就可以检查以确保没有人试图"欺骗系统"(这是一个游戏)。我只想有一个计时器,启动(当我发布网站时),永远不会停止。它必须不断地监视数据库记录,比如说,每x分钟。
我想我需要的是一个Web服务,但也许还有其他方法可以解决这个问题?
注意:不会有"客户端"连接到此"服务"或其他任何服务。
为什么不使用WindowsService?如果这不是一个选项,那么您至少需要向Web服务器发出一个初始请求来启动一个单独的工作线程。
此外,如果您正在使用.net4和IIS7.5,那么您可以使用asp.net自动启动功能,并摆脱启动应用程序的初始请求:
http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx
Jeff Atwood(StackOverflow的联合创建者)在这里描述了一种有趣的技术:https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
基本上,它涉及劫持ASP.NET缓存过期系统,以便按定期计划执行定期任务。
要么必须使用ASP.net 4的自动启动功能。
有两种方式
1。http://weblogs.asp.net/scottgu/archive/2009/09/15/auto-start-asp-net-applications-vs-2010-and-net-4-0-series.aspx
-
http://msdn.microsoft.com/en-us/library/system.web.preapplicationstartmethodattribute.aspx
以上两项都需要启动一些监视线程。
-
创建监视数据的WindowService。即使您在第三方托管服务上托管网站,也可以创建为您提供监控数据的web服务。
-
使用日程表http://quartznet.sourceforge.net创建作业以监视数据。
谢谢。
另一种方法是使用Global.asax的Application_Start方法。有关更多详细信息,请参阅本页。
protected void Application_Start()
{
//code your initial request to start the task
//use a thread to start the task in the background
}
然后你可以让工作线程休眠一段时间,然后每隔一段时间让它重新开始工作。
由于服务不会为请求提供服务,而是基本上执行后台任务,我认为Windows服务将是一个不错的选择。您可以将其设置为在启动时自动启动。(我假设你拥有网络服务器)。