GemBox 停止其余后端代码以在 DNN 模块中运行

GemBox stops the rest of the backend code to function in a DNN module

我们有一个 DNN 模块,一旦您选择了要将其导出到的格式,它就会从我们的 ERP 系统中获取 Price-list。我们正在使用 GemBox 生成 Excel、CSV 或 PDF 文件,但我们意识到的问题是,其余代码在开始生成文件以供下载后立即停止运行。这意味着 PostBack 停止。

我们正在使用 GemBox 中的最后一段代码,它不会硬中止线程:https://gemboxsoftware.deskpro.com/kb/articles/threadabortexception-in-asp-net-application

我们确保在 DotNetNuke 中禁用部分渲染。

然后我们更改了 back-end 代码以在代码触发后获取单独的 .aspx 文件(不是 .ascx 文件)以生成 Exel、CSV 或 PDF 文件。这可以防止 PostBack 停止工作。这现在将生成下载文件,但我试图阻止显示加载图标。我使用 RegisterStartupScript 进入 JQuery 函数来停止它,但它永远不会触发此 RegisterStartupScript 即使在代码包含在 PageLoad 部分中的单独文件上并且代码在调试时通过它。 (这是否意味着您不能在 view.ascx 文件以外的 DNN 模块上加载单独的页面?)

下载文件下载后 Front-End 似乎永远不会更新。这可能是破坏其余代码的 HTTP Header 响应吗?

如何在不重新加载整个网页的情况下 reset/reload DNN 模块页面?

这是否意味着我必须使用某种 Web Worker 函数编写一个 Ajax 函数?一旦下载文件在浏览器上弹出,我只想重新加载 DNN 模块。

当您生成文件并响应用户下载该文件时。浏览器无法处理其他操作或响应,例如注册启动脚本或其他方式。但是您可以发回 cookie。

因此,处理此问题的一种方法是在他们点击下载并显示您的进度指示器时触发一些客户端代码,然后根据您的实施方式检查 cookie 是否存在.当此更改时,您可以隐藏进度。

解决方案有点复杂,但是如何做: