我的应用程序允许用户上传经过处理的 CSV 文件,并将记录写入数据库。但是这个文件可以包含非常多的记录,例如 300 000。在这种情况下,处理所有这些记录可能需要长达半小时,我希望我的应用程序不要在这段时间内冻结页面,但是显示进度,可能还有一些错误,或者允许用户移动到另一个页面并不时返回检查过程会更好。我可以通过什么方式实现这一目标?
问问题
272 次
1 回答
0
我们解决类似问题的方法如下;
使用普通的 http 方法上传文件。
在本地保存文件。
将文件提交到异步 Web 服务 (.asmx)。此过程将插入一条记录,该记录将存储导入状态,同时实际开始导入记录。处理完所有记录后,相应地设置状态。
这一切都发生在一个流程中。因为 WebMethod 是异步的,所以它会在不等待自己完成的情况下返回,并且导入会在后台进行。
您现在将用户重定向到页面,该页面会定期检查异步导入的状态,直到完成为止。您还可以通过批处理记录并相应地更新其他字段来向此流程添加其他信息,例如进度。
多年来,这对我们来说效果很好。我没有添加任何真正的细节,因为这将特定于您的实现。
于 2012-08-16T07:42:23.237 回答