asp.net页面在30分钟后没有响应

时间:2013-07-19 18:48:26

标签: c# asp.net iis-7

我有一个asp.net网页,其中按钮点击事件过程运行35分钟,在前端我使用ajax并显示进度条图像。如果过程(按钮点击事件)在不到30分钟内完成,则页面重新加载成功,否则“进行中”图像即使在过程完成后仍会显示,直到AsyncPostBackTimeout的时间(设置为60分钟)并显示60分钟后服务器超时问题。 如果我做错了,请告诉我。

2 个答案:

答案 0 :(得分:3)

没有看到你的代码,我无法告诉你出了什么问题。但是,我可以推荐几个选项:

  • 将任务分解为多个步骤(而不是一个长链接任务)。对用户来说可能会有一些工作,但至少它们不会挂在页面上半小时+(哎哟!)。
  • 使用分析器查看实际花费的时间,看看您是否无法优化代码以减少过程。例如,如果它是一个数据库调用,那么创建存储过程而不是多个选择/更新(数据来回传递)可能是有意义的 - 在机器上保持处理直到需要最终结果。
  • 对于长期任务,将进程分解为服务或单独的实体(并且只是使服务报告返回进度)可能是有意义的。例如,MSMQ是一种运行专用服务并在需要时将任务传递给它的好方法。请记住,这现在创建了另一个层,这是另一个需要维护的地方。

答案 1 :(得分:1)

如果一个过程需要30分钟,那么明天可能需要60分钟或更长时间,因为您的服务器将忙着做其他事情。这种方法从根本上说是错误的。

我的建议是将这么长的任务放到另一层,即系统服务。该服务运行,从队列中挑选任务,逐个执行。前面层每隔几秒钟或几分钟就会查看操作是否完成。或者甚至更好,用户不会等待,他们会做其他事情,最终他们会被告知长时间运行的任务已经完成。