减少冗长的ASP.Net MVC控制器方法

时间:2016-08-04 14:30:14

标签: asp.net-mvc controller

我有一个执行以下操作的控制器方法:

  1. 从数据库加载信息
  2. 执行一些逻辑检查
  3. 移动文件
  4. 更新数据库中的信息
  5. 自动向(可能)大量收件人发送电子邮件
  6. 这种方法需要很长时间才能完成,我相信在流程结束时收到的电子邮件通常是罪魁祸首。在成功完成第4步之前,我无法向用户返回成功/失败。

    为了加快页面响应时间,我想在第5步开始之前实际向用户返回响应,因为用户并不真正需要知道结果第5步。

    我的第一个想法是制作两个控制器方法,让客户端在从第一个方法得到结果时自动点击第二个方法 - 但我宁愿不把这个逻辑交给客户端。

    实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在操作的第5步中使用QueueBackgroundWorkItem对电子邮件工作进行排队,然后立即返回客户端。

HostingEnvironment.QueueBackgroundWorkItem(e =>
{
    SendEmail();
});