global.asax中的Application_Start()事件

时间:2009-11-25 02:54:08

标签: c# asp.net global-asax

海派,          我的网站有成千上万的用户...我已经实现了一个后台任务,每天一次向每个用户发送邮件......我按照这个链接做了这个......

http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

我的问题是,每个用户点击我的网站都会触发Application_Start()...如果是这样,每个用户每天都会收到n封邮件,所以我想避免它......

4 个答案:

答案 0 :(得分:19)

Application_Start和Application_End方法是不代表HttpApplication事件的特殊方法。 ASP.NET在应用程序域的生命周期内调用它们一次,而不是为每个HttpApplication实例调用它们。

因此,当第一个用户打开网站时,它会点击application_start方法,之后就不会。

我要补充一点,你要做的就是冒险。如果您想进行批量电子邮件发送,那么您可能需要考虑可以每天发送电子邮件的Scheduler。

答案 1 :(得分:3)

Application_Start仅在第一个人访问该网站时以及app_pool刷新时运行。

每次点击网站都不会发生这种情况。

你可能想要像http://www.webcron.org/这样的类似于类似cron的系统来安排任务。

答案 2 :(得分:0)

应该在Application_BeginRequest上加上一个存储每个访问者状态的数据库。 但最合适的是Scheduler。

答案 3 :(得分:0)

从整体上看-这是可以在global.asax中触发的所有事件的列表:

http://aspalliance.com/1114_Understanding_the_Globalasax_file.3