c# - 处理长时间运行的报告

标签 c# asp.net ajax reporting

我正在开发一个用 C# 编写的带有 Sql Server 2000 数据库的 ASP.net 应用程序。我们有几个 PDF 报告,客户可以根据他们的业务需求使用这些报告。问题是这些报告需要一段时间才能生成(> 3 分钟)。通常最终发生的情况是,当用户请求报告时,请求超时会在 Web 服务器有时间完成生成报告之前终止请求,因此用户永远没有机会下载文件。然后用户将刷新页面并重试,这将重新开始整个报表生成过程,但仍以超时结束。 (不,我们现在不缓存报告;这是我正在努力插入的……)。

您如何处理这些情况?我脑子里有一个想法,涉及发出异步请求以开始生成报告,然后使用一些 javascript 来定期检查状态。一旦状态指示报告已完成,请单独请求实际文件。

有没有我没有看到的更简单的方法?

最佳答案

在这里使用文件系统可能是一个不错的选择。有一个立即返返回告 pdf 位置的 url 的请求。然后,您的服务器可以启动外部进程或向自身发送请求以执行报告。客户端可以在提供的 url 处轮询服务器(使用 http HEAD)以获取 PDF。如果您使 PDF 的文件名派生自报告参数,无论是通过使用散列还是直接将参数放入名称中,您也将获得即时服务器端缓存。

关于c# - 处理长时间运行的报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/157592/

相关文章:

javascript - 表单的进度条

c# - Mvc Razor 语法中的 RadiobuttonFor

c# - 如何找到asp :Login LoginError error type

c# - 在 C# 中从视频 URL 创建缩略图

c# - 在 asp.net mvc 中显示模式内的图形

asp.net - 在 ASP.NET MVC 中编译 View

asp.net - 应用程序池和工作进程线程之间是什么关系?

javascript - 在 asp.net mvc 中使用 ajax post 将数据从 JS 传输到 Controller 中的函数。但 View 没有改变

java - 页面刷新验证

c# - asp.net 中的文件处理程序