1

我在 IIS 7 上有一个由外部提供商托管的 ASP.NET MVC Web 应用程序。

我希望每 15 分钟左右运行一个进程,它检查需要发送的积压电子邮件,并实际发送它们。

执行此操作的正常方法似乎是使用 Microsoft Message Queue,但由于这是我无法直接控制的托管环境,我将无法安装或配置 MSMQ。

到目前为止,我决定通过将行附加到我的 SQL Server 数据库(相同的主机)中的表来实现。

那么我应该如何实现检查积压和发送电子邮件的位呢?

它应该是我的主 Web 应用程序中的某种单独的线程,它每 15 分钟重新启动一次吗?

我考虑的另一个选择是打开一个 HTTP-POST 接口,当使用适当的管理员密码调用该接口时,它会运行电子邮件发件人的迭代。

然后我可以在我的本地 PC 上创建一个小型控制台应用程序,它每 15 分钟调用一次界面。

第一个选项更简单,但第二个可能更健壮。

有任何想法吗?

4

2 回答 2

3

我建议你看看Quartz.NET。您还应该注意的一件重要事情是,如果不使用 ASP.NET 应用程序,Web 服务器可能会从内存中卸载它,这意味着所有已生成的线程都会简单地死掉。这就是为什么不应在 ASP.NET 应用程序中执行此类任务而应在 Windows 服务中卸载此类任务的原因之一。

于 2010-12-30T14:03:48.853 回答
2

Jeff Atwood 发表了一篇文章,介绍了他最初是如何在 Stack Overflow 上使用过期缓存定期重置流程来实现徽章系统的。

https://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

过去我每天都发送电子邮件做过类似的事情。该服务不是必需的,电子邮件错过一两天也没关系,因为它们最终会消失,但系统运行良好。这都是 asp.net,所以在我使用的托管环境中运行良好,无需访问服务器上的服务或从您的桌面创建本地触发器。

于 2011-02-01T06:25:26.943 回答