我正在开发一个MVC 5应用程序,该应用程序要求将大量数据导出到excel,因此我在单独的线程中运行它并按预期工作。但是当用户导航到其他页面时,导出被取消。我怎么能做到这一点。您的帮助将不胜感激。
用户离开页面时未得到结果
允许用户检索经过长时间运行的过程的结果的典型策略是将某种令牌与他们的处理请求相关联(可以是GUID,数据库ID等)。将过程的结果与该ID相关联。
一种简单的方案是使用GUID作为文件名的一部分将每个文件保存在文件系统中。您还希望有一个数据库表,将用户与其启动的长时间运行的进程的0:N GUID关联,并且可能还有一个状态列,指示作业是否完成。您也可以将生成的文件保存到数据库中。但是,您可以保存该过程的结果,请确保并提供某种机制来定期清除旧数据。
向用户提供一个页面,在该页面上,用户可以检查其长时间运行的流程的状态,并在流程完成后下载结果。根据您的情况,您还可以通过电子邮件向用户发送一个链接,他们可以在完成后使用该链接下载文件。
请注意,使用TPL处理请求可能不是最佳计划。有关替代品的完整列表,请查看
http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句