在Global.asax文件中创建Timer

时间:2012-07-12 12:36:23

标签: asp.net vb.net timer global-asax

我想为evey执行一个存储过程,并且必须通过在Global.asax文件中创建计时器来加载应用程序(dropdrown或某些asp.net控制器)中的数据集。

对于这种开发来说非常新,请任何人都可以发布代码或提供我在编码时需要做的准确流程以及如何加载asp.net控件(下拉列表或列表控件)。

先谢谢你,

2 个答案:

答案 0 :(得分:6)

这样的调度任务不适合用于aspx应用程序。

但是,您可以尝试几种黑客/解决方法:

http://www.codeproject.com/Articles/12117/Simulate-a-Windows-Service-using-ASP-NET-to-run-sc

http://www.west-wind.com/weblog/posts/2007/May/10/Forcing-an-ASPNET-Application-to-stay-alive

http://www.mikesdotnetting.com/Article/129/Simple-task-Scheduling-using-Global.asax

创建Windows服务或使用内置Windows调度程序会好得多。

答案 1 :(得分:6)

ASP.NET是这项工作的错误工具。

Web应用程序按照设计是一个请求 - 响应系统。它侦听请求,处理这些请求并返回响应。在该范围之外,应该假定应用程序未运行。 (实际上,IIS可能会出于各种原因关闭应用程序,并在新请求中再次唤醒它。)

您对计划任务的要求可能是Windows Service。这旨在在服务器的后台运行。包含一个计时器非常简单,它可以运行任务来响应该计时器的计时事件。

考虑一下......当计时器滴答时,Web应用程序做什么?如果它正在执行后台进程并且实际上没有响应Web请求,它将如何“将数据加载到某些asp.net控件中”?如果没有请求页面,则 没有要向用户显示的页面。

我想象这将起作用的方式是Windows服务将读取一些数据,运行一些业务逻辑来转换数据,并将转换后的数据写入数据库中的另一个表或一组表。然后,当Web应用程序填充其页面上的控件时,它将始终引用该另一个表或一组表。从本质上讲,Web应用程序将具有转换数据的后端进程的无知识。它只显示最新转换的数据。