0

我想在 ASP.Net 应用程序启动时每 'x' 分钟运行一次方法“ProcessBatch ()”。

我想我必须为此添加代码到 Application_Start 事件。

这样做的最佳方法是什么,以便当网站回收其应用程序池时,正在运行的计划任务被视为 Web 请求并允许完成?

4

2 回答 2

0

此外,根据您的站点托管位置,您可能能够使用该提供商的计划任务系统。Azure也有一个,RackspaceCloud 和DiscountASP.NET

于 2013-05-24T06:44:25.583 回答
0

您不能创建在 Web 服务器上“每 x 分钟”运行一次的计划任务。

有些人编写在客户端计算机上运行的服务,这些服务不时地对站点进行 ping 操作。但为此,您需要该客户端正常运行。

正如您所说,一种解决方法是 Application_Start 事件,但您的应用程序运行时间可能会超过几分钟。我们实际上不知道那是什么时候。

您可以在其他地方运行您的任务,例如 Session_Start 事件(每当新用户打开您的一个页面时),或者如果您编写自己的 HttpModule 甚至是 BeginRequest 事件。

在这些事件中,您可以记住任务最后一次运行的时间(例如静态任务,或者可能在 ApplicationState 中),以防止在您的站点拥有大量用户时每分钟运行数百次。

希望这可以帮助?

于 2013-05-24T06:34:46.663 回答