我有一个负责在DB中保存记录的控制器,一旦成功,就必须向管理员发送电子邮件。 APP使用此终点并在API响应之前发送电子邮件可以增加等待时间。因此,在记录保持不变之后发送电子邮件,我想在控制器将响应发送到APP之后发送。
我用谷歌搜索但没能找到具体的答案。我认为起点可能是动作过滤器。
谢谢。
答案 0 :(得分:2)
我会实现一个通知服务,只是将消息添加到队列中,这样控制器就不必等待发送电子邮件。
答案 1 :(得分:0)
也许您可以使用ResultFilter:
public class MailSenderAttribute : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
//your code...
}
}
...
[MailSenderAttribute]
public ActionResult YourAction() { /*code*/ }
答案 2 :(得分:0)
因为在从控制器发送响应到客户端后,MVC生命周期将结束,因此操作过滤器无效。同意NachoMK。我想我们可以按照Scott Hanselman在博客中的建议实施。 http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx