|
|
1
6
它奏效了! 以下是我所做的: 步骤1&2-调用Action方法,启动长时间运行的线程
当我的动作方法被调用时,它会生成一个唯一的ID。然后,我实例化我的一个实例
一旦线程启动(或在启动之前),生成器实例就会存储在缓存中:
我还将guid附加到ViewData,以便在我的视图脚本中引用它。 步骤3&4-显示和更新状态/进度视图
现在线程正在运行,PDF生成已经开始,我可以显示我的进度视图脚本了。使用jQuery
我的视图脚本解释Json并显示相应的进度信息。 步骤5-向用户展示文件
生成完成后,生成器状态会相应地设置,当jQuery收到此信息时,它可以提供链接,也可以使用javascripts直接发送文件
设置并返回文件的Action方法只是将生成器从缓存中取出,并返回附加的字节[]
我的实际工作我有更详细的状态,如初始化、运行和完成。以及进度百分比(以小数表示,1.0表示完成)。 所以,是的,希望这能帮助其他试图做类似事情的人。 |
|
|
2
7
Cashe非常适合这个。只有一件事是确保在进程运行时缓存的项目永远不会被删除(您可以使用ItemPriority.NotRemovable)。
您可以将文件保存在磁盘上的临时文件夹中,也可以将其在缓存中保留一段时间(具体取决于情况)。
在客户端,当最后一个Ajax请求返回结果时(可能看起来像
{进度:“100%”,结果URL:http://your.url/Where/ToGet/TheFile.aspx?file=GUID-或缓存密钥“}
客户端重定向可以使用Javascript完成,如下所示:
顺便问一下,你是如何生成PDF的?非营利组织? |
|
|
Andrus · 如何在Linux中阅读期刊 1 年前 |
|
|
Miranda · 读取xml文件时路径错误中有非法字符 1 年前 |
|
|
Primdonm · 如何将自定义列表中的字符串值格式化为货币格式? 1 年前 |
|
|
Kiryl · Sitecore中自己的控制器 2 年前 |
|
|
Farid · 如何从数据库中填充Resource.resx文件值? 2 年前 |