响应.重定向问题在 ASP.Net

本文关键字:ASP Net 问题 重定向 响应 | 更新日期: 2023-09-27 17:56:07

我正在使用 ASP.Net + VSTS 2008 + .Net 3.5 + C# + IIS 7。我想知道是否在服务器端,我将 response.redirect 调用到同一 Web 应用程序中的另一个 URL,会话是继续还是终止?

例如,如果我在 a.aspx 中将会话变量 foo 设置为值"goo",那么在 a.aspx 中我将 response.redirect 调用 b.aspx,无论是在 b 中.aspx我可以 100% 将会话变量 foo 的值设置为"goo"?我的困惑是我听到了响应.重定向不会 100% 继续会话,这是真的吗?

提前感谢,乔治

响应.重定向问题在 ASP.Net

您可以使用 Response.Redirect 的重载,该重载也需要一个bool,这不会结束响应。

Response.Redirect("~/default.aspx", false)

伯特兰·勒罗伊在这里介绍了它。

Response.Redirect会杀死你的会话,所以它不一定在b.aspx中可用。相反,请尝试使用 false 参数确保响应不会立即终止的Response.Redirect("/b.aspx", false);

会话值在会话的整个生命周期中保持不变。会话将在浏览器关闭或超时过期或显式关闭后结束。

http://msdn.microsoft.com/en-us/library/ms178581%28v=VS.90%29.aspx

我的问题如下:-

问题:当我们将 ASP.NET 应用程序移动到另一台服务器(Windows Server 2008 R2)并使用 IIS 7.5 时,该应用程序无法在页面之间移动会话值。 例如,会话值在第一页中设置,但无法移动到下一页。在下一页中,同一会话变量的值为 NULL。

在Google Chrome和Firefox的情况下,会话值正在移动到下一页,但在Internet Explorer中没有。

解决方案:我们创建了带有"_"(下划线)的 URL 名称

其他可能的解决方案:

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

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

Response.Redirect(url,false) 函数将更改会话,如果 url 是绝对 url 如果您不想丢失会话,请使用绝对路径代替。