ASP.Net中的response.redirect问题

时间:2011-05-09 16:15:09

标签: c# asp.net session iis-7 response.redirect

我正在使用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%继续会话,是真的吗?

提前谢谢, 乔治

5 个答案:

答案 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中却没有。

解决方案:我们使用“_”(下划线)

创建了网址名称

其他可能的解决方案:

  1. 使用Response.Redirect并将第二个参数设置为“false”以避免执行页面,从而避免丢失会话令牌。您必须按如下方式使用URL。 Response.Redirect(“NextPage.aspx”,false)

  2. 如果站点的应用程序池配置为Web场或Web园(通过将最大工作进程数设置为多个),并且您没有使用会话服务或SQL会话,传入的请求将无法预测地转到其中一个工作进程,如果它不是创建会话的那个进程,则会丢失。如果您不需要提高性能,或者使用其中一个进程外会话提供程序,则此问题的解决方案是不使用Web园。

答案 4 :(得分:0)

Response.Redirect(url,false)功能会在网址绝对网址的情况下更改会话,如果您不想放松会话使用绝对路径