我有一个Web应用程序(Asp Net MVC和WebApi),我有一个议程,当在其中创建一个事件时,我可以标记为通过电子邮件接收它的提醒...这就是问题所在,我需要一个WebApi中的方法,它一整天都保持活动状态,当你错过30分钟的活动时,发送一封电子邮件提醒......
由于我不知道如何做到这一点,我一直在寻找一个互联网,我已经看到了一些关于SignalR和Rx .NET的东西......这些对这个问题真的有用吗?有没有更多的技术可以做到这一点!?
答案 0 :(得分:0)
与许多Web服务器技术一样,ASP.NET并不是为执行这种实时任务而设计的。即使有可能出现一些怪癖,也有可能遇到很多问题。服务器可以随时重新启动,在群集上运行等。
我可以给你一个建议,我们倾向于解决这样的事情。
看起来您可能不需要“实时”准确度,也许只需每隔1分钟(甚至5分钟)打一次间隔并发送此时到期的所有电子邮件,例如:
// Of course, I don't know where your Data is coming from etc... asume some services doing that
public ActionResult SendDueEMails()
{
// Query everything older then 30 minutes...
var dueEMails = SomeReminderRepository.GetReminders();
foreach (var dueEMail in dueEMails)
{
// Process sending of e-Mails
EMailService.SendReminder(dueEMail);
}
return Content(dueEMails.Count + " e-Mails sent.");
}
然后,你可以有一些外部配置的任务(这里有很多可能性),每隔1分钟请求一次这个URL。
这不是实时的,而是更安排的,但它可以解决您的问题。