2009-12-16 69 views
0

在我的应用程序的代码:如果该方法被GenerateTeacherCountCrossRegions了很长时间执行的Response.Redirect( “page.aspx”)并不总是工作

CreditsSubjectsNamesTeacherCount n = new CreditsSubjectsNamesTeacherCount(); 
Session["UserID"] = n.GenerateTeacherCountCrossRegions(txtStartYear.Text.CheckOnEmptyYear(), ((UserInformation)Session["UserInformation"]).UserName); 
Response.Redirect("page.aspx"); 


犯规重定向(〜> 10分钟)。什么会导致这个问题?
PS:加入:
<httpRuntime executionTimeout="18000".. >但它没有帮助。
谢谢。

+0

为什么GenerateTaeacherCountCrossRegions方法占用10分钟以上?也许你应该在修正症状之前检查一下。 – nWorx 2009-12-16 12:20:32

+0

确定你是对的,但是在那里做的操作太多了,没有时间优化该算法(客户满意甚至等待几小时的等待时间(他将在晚上离开报告一代)+他不支付这个功能..) – 0x49D1 2009-12-16 12:23:36

回答

2

浏览器已停止等待页面,因此不再有连接。服务器只是将重定向发送到void,其中没有人在监听。

在单独的线程中启动工作,以便响应不必等待它完成。重定向到重新加载的页面以检查工作状态,并在工作完成时重定向到最终页面。

要与后台线程进行通信,您需要两个线程都有引用的对象。您可以将对该对象的引用存储在会话变量中,以便检查状态的页面可以访问该对象。

+0

添加后台线程+删除更新面板页,它现在的作品:)(寿没有管理进度显示功能,但仍然..) – 0x49D1 2009-12-16 13:31:42

3

该请求已超时。 Response.Redirect发送一个HTTP响应,要求浏览器请求一个不同的页面 - 如果请求在浏览器中超时,它将不会接受这个响应。

+0

谢谢你的答案..我有同样的想法,但更改web.config中的executionTimeout也没有帮助..也许是我错过了什么? – 0x49D1 2009-12-16 12:16:38

+1

超时在浏览器端,所以更改服务器上的设置将无济于事...... – RickNZ 2009-12-16 12:24:02

+1

我认为这是客户端超时,而不是您可以在服务器端设置中控制的东西... – 2009-12-16 12:24:12

0

该请求将超时,因此浏览器将显示错误而不是预期的页面。请注意,调试时可能不会发生这种情况,仅在部署时才会发生。

对于这种长时间运行的操作,考虑一个不同的接口。

我已经创建了其中所分析的数据是通过电子邮件,当它被计算发送给用户的系统:内部我已经催生断BackgroundWorker线程这样做,那么使用MailMessage发送报告的计算PDF附件。