6

我进入共享主机,他们不允许我使用 Windows 调度程序......那么在 asp.net 中实现预定任务的方法是什么(定时邮件)......我刚刚看到Jeff Atwood 博客的后台进程...... . 可靠吗?或任何其他执行计划任务的方式...

然后我找到了quartz.net,但我找不到将quartz.net 嵌入asp.net 的简单示例(没有安装Quartz.Net 服务器作为独立的Windows 服务)......关于quartz.net 的任何建议...... .

4

6 回答 6

3

您可以简单地编写一个 ASP.Net 页面来执行您的任务,例如发送邮件。然后使用像SetCronJob这样的在线调度服务来按计划调用服务器上页面的 URL。

这种非常简单的方法的缺点是您依赖于外部服务。

于 2010-07-14T09:55:24.697 回答
1

我正在调查Microsoft.Web.Administration 程序集计划类以实现相同的目的,但似乎该类只能用于计划 IIS 工作进程重启,这里是创建应用程序池和设置定期重启的示例

因此,唯一的方法是计划重新启动 ASP.NET 应用程序,然后在 Application_Start 中执行计划的工作。但那是丑陋的黑客而不是解决方案,所以最后我最终为我们已经在 Web 服务器上运行的本土备份 Windows 服务添加了调度功能,因此 IMO Quartz.net 是您的最佳解决方案。也许您可以说服您的网络提供商安装 Quartz.net,所有其他解决方案似乎都是一种黑客,会给您带来或多或少的问题。

于 2010-07-14T10:35:02.463 回答
0

不久前我遇到了同样的问题,并且没有使用第三方服务,没有很好的解决方法。

也就是说,我使用了 .NET 应用程序缓存对象,其有效期为 24 小时。

Cache["DailyTask"] = true;

然后在我的基本页面类中,每次发出页面请求时,我都会检查该变量是否存在,如果存在,则运行该任务。这样做的缺点是,您依赖于对您的应用程序发出的页面请求。

最后,我看到的另一种方法是在缓存到期时设置回调(CacheItemRemovedCallback 方法),然后链接该方法以将新项目插入缓存中,该缓存也有回调,因此循环重复。

于 2010-07-14T10:28:12.560 回答
0

System.Timers.Timer - http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx

在你的 global.asax 中启动它

于 2010-07-14T19:29:00.397 回答
0

.NET 定时定时器

或者

数据绑定计划控件

于 2010-07-14T09:40:59.147 回答
0

您可以从中汲取灵感,并将您的任务放在 KeepAlive 方法中。希望!它有助于。

于 2010-07-14T10:26:39.520 回答