我有一个网页。有一个生成pdf报告的链接。当用户点击链接时,pdf生成过程应该开始。由于生成的pdf的文件大小很大(> 15Mb),用户不能等待&因此必须继续他的其他活动。这意味着现在将发生以下同时发生的事情
基本上是实施
问题
我如何实现这一点。我是一个使用C#创建aspx网页的dot net(框架2.0)开发人员。我使用javascript& AJAX(AjaxPro)可以摆脱典型ASP.NET Web应用程序中的回发。
答案 0 :(得分:2)
在这种情况下,您可能需要考虑将PDF生成代码拆分为单独的服务,您的AJAX代码可以与之交互以启动PDF创建。一旦服务创建了PDF文件,该服务就可以通过电子邮件向用户发送相关信息。
AJAX代码将使用远程处理与服务进行通信。
答案 1 :(得分:1)
您在创建报告并将其通过电子邮件发送给用户时的概念非常好。
在客户端执行此操作应该非常简单,即指示需要创建报表的基本调用。即将其保存到表(报告队列)
报告的实际创建不应该由来自前端的任何调用直接触发,创建一个服务(Windows服务),该服务通过“报告队列”生成PDF文件并发送电子邮件。 / p>
作为一个附加选项,假设PDF没有被销毁(即不是仅限电子邮件的解决方案),可以在客户端上创建ajax弹出窗口,然后用户可以转到报告页面并下载已生成的文件。
答案 2 :(得分:0)
您可以尝试使用定时器对函数isReportDone()进行AJAX调用,然后函数isReportDone()检查存储库中的PDF。为了生成PDF,我认为您需要将该任务从正常的请求 - 响应线程中传出。通过调用单独的线程(多线程很有趣)来处理它,或者将数据传递给服务器上的单独服务。
这些只是两个想法我真的有一个类似的问题,从数据库生成一个必须强制下载的文件。我最后在一个单独的窗口中调用一个单独的页面,将数据写入响应流。它实际上很有效,直到客户的网络阻止任何弹出窗口。
答案 3 :(得分:0)