大家好,
我的网站有成千上万的用户...我已经实现了每天向每个用户发送邮件的后台任务...我按照这个链接来做这个...
我的问题是,每个访问我的网站的用户都会触发Application_Start()吗?如果是,那么每个用户每天都会收到n封邮件,所以我想避免这种情况...
Application_Start和Application_End方法是特殊的方法,它们不代表HttpApplication事件。ASP.NET在应用程序域的生命周期中仅调用它们一次,而不是针对每个HttpApplication实例。
因此,当第一个用户打开站点时,它将触发application_start方法,之后就不会再触发了。
我想强调的是,你正在尝试的做法存在风险。如果你想批量发送电子邮件,可以考虑使用定时器来每天发送邮件。
当第一个人访问站点时,Application_Start 才会运行,并且在 app_pool 刷新时也会运行。
它不会在每次访问站点时都发生。
您可能想考虑使用类似于 cron 的系统来安排任务的计划,比如 http://www.webcron.org/。
以下是可以在global.asax中触发的所有事件列表:
http://aspalliance.com/1114_Understanding_the_Globalasax_file.3
应该放在Application_BeginRequest加上一个存储每个访问者状态的数据库中。 但最合适的是放在调度程序上。