我正在创建一个ASP.NET .NET 4.0网站,并且该网站的一部分要求有一个"始终在运行"应用。通常情况下,我会为此创建一个Windows服务,但该网站将托管在共享托管环境中,除非我得到虚拟服务器,否则这不可能。
我的第一个想法是在后台运行一个可以执行此操作的线程,它将在Application_Start上创建并在Application_End上销毁。我环顾四周,看起来这可能是一个选项,但我当然必须点击网站才能调用Application_Start,如果关联的AppPool被重新打包,那么这个过程必须重复(所以我相信?!?)。
在普通的ASP.NET网站中,这些看起来有可能吗?我正在开发一个ASP.NET(带有sql server)应用程序。
答案 0 :(得分:1)
答案 1 :(得分:0)
首先,您应该将电子邮件排队,可能在数据库的表中。请记住,您可以通过Ms Sql Server(http://technet.microsoft.com/en-us/library/ms190307.aspx)发送邮件,这是一个选项。
另一种方法是使用Quartz Net调度程序。编写一个MailingService类并通过在application_start事件中初始化quartz来运行它。您可以将其配置为每分钟运行并检查邮件队列并尝试发送,如果已成功发送,则从队列中删除...即使您回收应用程序,您的邮件也不会丢失,因为它们在数据库中排队。