我正在构建一个需要持续监视的站点,以便我们可以检查以确保没有人试图“欺骗系统”(这是一款游戏)。我只想有一个计时器开始(当我发布的网站),并永不停止。它必须不断监控db记录,比如每x分钟。如何在没有用户交互的情况下在ASP.NET中启动任务
我想我需要的是一个Web服务,但也许有另一种方法来解决这个问题?
注意:将不会有'客户端'连接到'服务'或任何它将是。
我正在构建一个需要持续监视的站点,以便我们可以检查以确保没有人试图“欺骗系统”(这是一款游戏)。我只想有一个计时器开始(当我发布的网站),并永不停止。它必须不断监控db记录,比如每x分钟。如何在没有用户交互的情况下在ASP.NET中启动任务
我想我需要的是一个Web服务,但也许有另一种方法来解决这个问题?
注意:将不会有'客户端'连接到'服务'或任何它将是。
杰夫阿特伍德(StackOverflow上的联合创始人)介绍了一个有趣的技术,这样做,在这里:http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
基本上它涉及劫持ASP.NET缓存过期的系统上做定期定期任务。
缓存过期+1。我自己也使用了(独立思考)这种技术,因为您可以指定要过期的缓存对象的回调。在global.asax应用程序启动时设置或从AssemblyInfo PreApplicationStartup – 2012-10-02 14:50:34
由于该服务不会为请求提供服务,但基本上会执行后台任务,因此我认为Windows服务将是一个不错的选择。 您可以将其设置为在启动时自动启动。 (我假设你拥有网络服务器)。
为什么不使用WindowsService?如果这不是一个选项,那么你至少需要一个初始请求到Web服务器来启动一个单独的工作线程。
此外,如果你正在使用.NET4和IIS7.5,那么你可以使用asp.net自动启动功能,并摆脱初始请求启动应用程序:
+1中设置自动启动功能。不知道这一点。 – 2012-01-15 06:17:52
无论是你必须使用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服务来为您提供监控数据。
使用schedular http://quartznet.sourceforge.net 创建作业来监视数据。
谢谢。
另一种解决方法是使用Global.asax的Application_Start方法。有关更多详细信息,请参阅this page。
protected void Application_Start()
{
//code your initial request to start the task
//use a thread to start the task in the background
}
然后,您可以将工作线程休眠一段时间,然后稍后重新开始工作。
类不启动,进程做。 – 2012-01-15 06:06:07
我很抱歉,我有一个脑子大脑的时刻,我用错了词。这可能与Razor代码/ webmatrix网络应用程序? – Jason 2012-01-15 06:07:35
假设您控制服务器,您可能需要在服务器上运行的Windows服务。互联网上有很多资源描述如何构建一个。 – 2012-01-15 06:08:57