我有一个aspx页面(page1.aspx),我在其中设置了一个Session变量,然后重定向到另一个页面:
HttpContext.Current.Response.Redirect("page2.aspx");
在page2.aspx上我想读取会话变量,但在重新加载页面之前它不存在。我尝试在page_load中读取会话变量。
奇怪的是它可以在firefox中运行,但不适用于资源管理器吗?
(请注意,我已经简单地解释了一下这个问题。我从HttpModule访问了page1.aspx并重写了(我的解决方法是访问Session)。所以流程是HttpModule -pathrewrite-> page1 .aspx(set session var)-redirect-> page.2.aspx。)
答案 0 :(得分:3)
尝试将响应重定向切换为:
Response.Redirect("page2.aspx",false);
HttpContext.Current.ApplicationInstance.CompleteRequest();
名义上的Redirect(url)
隐式调用引发Redirect("url", true)
的{{1}}。在ASP.NET内部完成时,引发的ThreadAbortException是一个特殊的异常。可以捕获的此异常无法静音。它将继续冒泡ASP.NET调用链,使当前工作线程立即终止。
突然终止可能会影响到这一点。
答案 1 :(得分:1)
仅供参考:
添加ApplicationInstance.CompleteRequest();
并没有真正解决我的问题(我的错误)。
找到一个描述问题的博客条目,其解决方案可以解决问题。
http://forums.asp.net/p/1163911/1931020.aspx#1931020
我在第2页中添加了(在PageLoad上):
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ExpiresAbsolute = DateTime.Now.AddMonths(-1);