Response.Redirect(“page.aspx”)并不总是有效

时间:2009-12-16 12:11:31

标签: c# asp.net redirect

在我的应用程序中使用此代码:

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


如果方法GenerateTeacherCountCrossRegions正在执行很长时间(〜> 10分钟),则不会重定向。是什么原因造成这个问题?
PS:补充说:
<httpRuntime executionTimeout="18000".. >但它没有帮助。
谢谢。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

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

我创建了一个系统,在计算完成后,通过电子邮件将分析的数据发送给用户:内部我已经产生了一个BackgroundWorker线程来进行计算,然后使用{{1}将报告作为PDF附件发送。