[英]Response.Redirect(“page.aspx”) doesn't always work
在我的应用程序中,此代码:
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".. >
但这没有帮助。
谢谢。
该请求已超时。 Response.Redirect发送HTTP响应,要求浏览器请求其他页面-如果该请求在浏览器中超时,则它将不接受此响应。
浏览器已停止等待页面,因此不再有连接。 服务器只是将重定向发送到没有人正在听的void中。
在单独的线程中开始工作,因此响应不必等待其完成。 重定向到偶尔重新加载以检查工作状态的页面,并在工作完成后重定向到最终页面。
要与后台线程通信,您需要一个两个线程都引用的对象。 您可以将对对象的引用存储在会话变量中,以便检查状态的页面可以访问它。
该请求将超时,因此浏览器将显示错误而不是预期的页面。 请注意,这仅在部署时可能不会在调试时发生。
对于此类长时间运行的操作,请考虑使用其他接口。
我创建了一个系统,在该系统中,计算出的分析数据在计算时会通过电子邮件发送给用户:在内部,我派生了BackgroundWorker
线程来进行计算,然后使用MailMessage
将报告作为PDF附件发送。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.