导出到 Excel 作为 MVC 5 中的后台任务
Export to Excel as a background task in MVC 5
我正在开发一个 MVC 5 应用程序,它需要将大量数据导出到 excel,
所以我 运行 这在一个单独的线程中并且按预期工作。但是当用户导航到其他页面时,导出被取消。我怎样才能做到这一点。
非常感谢您的帮助。
user does not get the result as he left the page
允许用户检索长 运行 过程的结果的典型策略是将某种令牌与其处理请求相关联(它可以是 GUID、数据库 ID 等)将过程的结果与该 ID 相关联。
一个简单的方案是使用 GUID 作为文件名的一部分来保存文件系统中的每个文件。您还希望有一个数据库 table 将用户与他们已启动的长 运行 进程的 0:N GUID 相关联,并且可能还有一个状态列指示作业是否完成。您还可以将生成的文件保存到数据库中。无论您如何保存过程的结果,请务必提供某种机制来定期清理旧数据。
为用户提供一个页面,他们可以在该页面上检查其长期 运行 进程的状态,并在进程完成时下载结果。根据您的情况,您还可以通过电子邮件向用户发送 link 他们可以在完成后用于下载文件。
请注意,使用 TPL 处理请求可能不是最佳方案。有关备选方案的完整列表,请查看
http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
我正在开发一个 MVC 5 应用程序,它需要将大量数据导出到 excel, 所以我 运行 这在一个单独的线程中并且按预期工作。但是当用户导航到其他页面时,导出被取消。我怎样才能做到这一点。 非常感谢您的帮助。
user does not get the result as he left the page
允许用户检索长 运行 过程的结果的典型策略是将某种令牌与其处理请求相关联(它可以是 GUID、数据库 ID 等)将过程的结果与该 ID 相关联。
一个简单的方案是使用 GUID 作为文件名的一部分来保存文件系统中的每个文件。您还希望有一个数据库 table 将用户与他们已启动的长 运行 进程的 0:N GUID 相关联,并且可能还有一个状态列指示作业是否完成。您还可以将生成的文件保存到数据库中。无论您如何保存过程的结果,请务必提供某种机制来定期清理旧数据。
为用户提供一个页面,他们可以在该页面上检查其长期 运行 进程的状态,并在进程完成时下载结果。根据您的情况,您还可以通过电子邮件向用户发送 link 他们可以在完成后用于下载文件。
请注意,使用 TPL 处理请求可能不是最佳方案。有关备选方案的完整列表,请查看
http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx