asp.net - 在 .NET Framework Web 应用程序中生成大型 .csv 文件(100 万行以上)
问题描述
我们在 Azure 中部署了一个 .NET Framework (4.8) Web 应用程序,它具有用户可以将原始数据导出到 .csv 文件的功能。数据集很大,可能有数百万行,大约 20 列。
以前,导出功能使用 OpenXML SDK 生成 .xslx 文件,但该过程太长(最多可能需要 2 小时)。此外,通常用户单击导出,然后关闭浏览器,有时应用程序域会被应用程序池生命周期回收,这导致文件生成永远不会在进程被终止时完成。
我们将文件格式更改为 .csv,现在处理一百万行大约需要 15 分钟。减少执行时间 = 减少应用程序域在文件生成结束之前被回收的机会。
但是,我们仍然不确定该文件是否会始终生成,并且我们担心将来(随着数据库不断增长)该进程会再次被轻松杀死。
我们目前正在考虑另一种方法,我一直在研究 Azure Web Jobs、Windows 服务等,但我没有找到任何可以满足我们需求的东西:根据用户请求从 Web 界面生成一个大文件,然后发送下载通过电子邮件链接。这个过程需要很快,我们需要确保它总是能完成执行。
我想知道你们中是否有人对如何解决这个问题有任何想法。
我们想知道如何从 Web 应用程序中提取该文件生成以及如何在用户请求时触发该文件(这意味着我们需要将参数传递给该文件生成)。
谢谢!
解决方案
推荐阅读
- mysql - mysql中IF函数中current_timestamp()的使用
- snowflake-cloud-data-platform - 如何克服 Snowflake SQL UDTF 相关子查询错误?
- testing - 元素不可交互,尝试使用多个定位器
- php - 如何在 php 中的查询参数中传递 json Dtat 以进行拉取服务
- css - 变换旋转未按预期旋转多次
- php - PHP从2个数组中减去数组的值
- ruby-on-rails - React/Rails/Devise - 设计超时未按预期工作
- wcf - 从 WCF 服务发送空响应
- javascript - 在线将动态网站嵌入 Sharepoint
- r - 使用其他 df 过滤 df 的列