电子邮件发送三次asp.net网站

时间:2012-07-09 20:42:54

标签: c# asp.net email iis web-config

我正在开发一个电子商务网站,我们正试图解决一个问题。 在客户完成订单后,她收到三封电子邮件(所有邮件都是相同的)而不是一封。 该网站在三台服务器上运行,我们认为这是问题所在,因为只使用一台服务器会将一封电子邮件发送给客户。 我想知道我们应该做什么,这样用户只会收到一封电子邮件而不是三封电子邮件,我们仍会在三台服务器上运行该网站。 在此先感谢Laziale

1 个答案:

答案 0 :(得分:0)

您不能指望数据库中的锁定提示。提示只是一个暗示;无法保证锁定将按预期发生(假设这是SQL Server)。通常,关系数据库就是数据库。表不是排队机制,如果您尝试以这种方式使用它,您将始终遇到问题。

尽管如此,为了实现不同的解决方案,我们必须确定是否将单个记录添加到“队列”中或者是否添加了三个记录。如果它是第一个,并且只添加了一条记录,但发送了三封电子邮件,那么解决方案很简单。不使用数据库表作为队列,而是使用Microsoft消息队列(MSMQ)。它们是Windows Server的一部分,至少从2003年开始,甚至可能一直追溯到2000年。它们将为您提供专门为您要完成的工作而设计的实际队列。

如果有三个实际记录被添加到数据库中的“队列”表中,则表示存在代码问题。即使在负载均衡器中有三个Web服务器,事实仍然是单个订单提交仅发生在其中一个服务器上。将电子邮件通知放入队列的业务逻辑不能来自多个服务器,因为请求仅来自一个服务器。

我会先检查表格,然后确定是否添加了多条记录。如果没有,请更改实现以使用MSMQ。如果是这样,请检查您的代码,看看为什么在请求中添加了多条记录。