ASP.NET长任务挂起其他页面?

时间:2010-09-28 18:04:38

标签: asp.net asp.net-2.0 long-running-processes

我正在使用优秀的SpreadSheetGear工具动态生成报告。起初事情很棒,因为报告很简单并且在1秒内完成。现在我处于更复杂的报告中,他们需要大约30秒到1分钟。这不是问题,我们只是抛出一个活动图像,让用户等待我们。

我发现的问题是当两个用户访问该网站时。

  1. 用户1访问该网站
  2. 用户1运行一个需要30秒的报告。
  3. 用户2访问该网站
  4. 用户2等待用户1报告完成,然后页面加载。
  5. 为用户1运行的报告会挂起网站,直到完成为止。发生了什么,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您不会分享有关代码内容的任何详细信息,但听起来您应该考虑制作asynchronous pages。简而言之,诀窍是从线程池中移除繁重的工作,线程池用于提供页面请求。通过将繁重的工作移动到其他线程,线程池线程可以快速返回到池中,以便为其他传入请求提供服务。

然后,更重要的是制作报告的机器可以完成多少工作。

答案 1 :(得分:0)

报告数据多久更改一次?例如,如果您使用的是SQL Server,则可以使用存储过程将报表数据创建到表中,并使存储过程作为SQL Server代理作业运行。将作业设置为经常运行,因为您希望更新数据。这样可以大大加快您的页面速度。

听起来你可能在同一个帖子上有两个请求?