ASP.NET MVC:如何在发送响应后进行后期操作?

时间:2014-11-28 05:08:47

标签: c# asp.net-mvc

我有一个负责在DB中保存记录的控制器,一旦成功,就必须向管理员发送电子邮件。 APP使用此终点并在API响应之前发送电子邮件可以增加等待时间。因此,在记录保持不变之后发送电子邮件,我想在控制器将响应发送到APP之后发送。

我用谷歌搜索但没能找到具体的答案。我认为起点可能是动作过滤器。

谢谢。

3 个答案:

答案 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