我正在使用ASP.Net + VSTS 2008 + .Net 3.5 + C#+ IIS 7.我想知道如果在服务器端,我将response.redirect称为同一个Web应用程序中的另一个Url,无论会话是继续还是终止?
e.g。如果我将会话变量foo设置为a.aspx中的值“goo”,那么在a.aspx中我将response.redirect调用到b.aspx,无论是否在b.aspx中,我都可以100%获取会话变量foo的值为“咕“?我的困惑是我听到response.redirect不会100%继续会话,是真的吗?
提前谢谢, 乔治答案 0 :(得分:4)
你可以使用带有bool
的Response.Redirect的重载,但不会结束响应。
Response.Redirect("~/default.aspx", false)
Bertrand le Roy涵盖here。
答案 1 :(得分:2)
Response.Redirect会终止您的会话,因此b.aspx
无法使用它。相反,请尝试使用Response.Redirect("/b.aspx", false);
,其中false参数可确保不会立即终止响应。
答案 2 :(得分:1)
会话值在会话期间保持不变。会话将在浏览器关闭或超时到期或明确关闭后结束。
http://msdn.microsoft.com/en-us/library/ms178581%28v=VS.90%29.aspx
答案 3 :(得分:0)
我的问题如下: -
问题:当我们将ASP.NET应用程序移动到使用IIS 7.5的另一台服务器(Windows Server 2008 R2)时,应用程序无法在页面之间移动会话值。例如会话值已在第一页中设置,但无法移至下一页。在下一页中,同一会话变量的值为NULL。
在谷歌浏览器和Firefox的情况下会话值正在转移到下一页,但在Internet Explorer中却没有。
解决方案:我们使用“_”(下划线)
创建了网址名称其他可能的解决方案:
使用Response.Redirect并将第二个参数设置为“false”以避免执行页面,从而避免丢失会话令牌。您必须按如下方式使用URL。 Response.Redirect(“NextPage.aspx”,false)
如果站点的应用程序池配置为Web场或Web园(通过将最大工作进程数设置为多个),并且您没有使用会话服务或SQL会话,传入的请求将无法预测地转到其中一个工作进程,如果它不是创建会话的那个进程,则会丢失。如果您不需要提高性能,或者使用其中一个进程外会话提供程序,则此问题的解决方案是不使用Web园。
答案 4 :(得分:0)
Response.Redirect(url,false)功能会在网址为绝对网址的情况下更改会话,如果您不想放松会话使用绝对路径。