如何在没有用户交互的情况下在ASP.NET中启动任务

本文关键字:NET ASP 启动 任务 情况下 交互 用户 | 更新日期: 2023-09-27 18:20:15

我正在构建一个需要持续监控的网站,这样我们就可以检查以确保没有人试图"欺骗系统"(这是一个游戏)。我只想有一个计时器,启动(当我发布网站时),永远不会停止。它必须不断地监视数据库记录,比如说,每x分钟。

我想我需要的是一个Web服务,但也许还有其他方法可以解决这个问题?

注意:不会有"客户端"连接到此"服务"或其他任何服务。

如何在没有用户交互的情况下在ASP.NET中启动任务

为什么不使用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

  1. http://msdn.microsoft.com/en-us/library/system.web.preapplicationstartmethodattribute.aspx

    以上两项都需要启动一些监视线程。

  2. 创建监视数据的WindowService。即使您在第三方托管服务上托管网站,也可以创建为您提供监控数据的web服务。

  3. 使用日程表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服务将是一个不错的选择。您可以将其设置为在启动时自动启动。(我假设你拥有网络服务器)。