繁体   English   中英

ASP.Net中的response.redirect问题

[英]response.redirect issue in ASP.Net

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

例如,如果我将会话变量foo设置为a.aspx中的值“goo”,那么在a.aspx中我将response.redirect调用到b.aspx,无论是否在b.aspx中,我都可以100%获取会话变量foo的值为“咕”? 我的困惑是我听到response.redirect不会100%继续会话,是真的吗?

乔治,提前谢谢

您可以使用带有bool Response.Redirect的重载,但不会结束响应。

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

Bertrand le Roy 在这里介绍它。

Response.Redirect将b.aspx您的会话,因此它不一定在b.aspx可用。 相反,尝试使用Response.Redirect("/b.aspx", false); 其中false参数确保响应不会立即被杀死。

会话值在会话期间保持不变。 会话将在浏览器关闭或超时到期或明确关闭后结束。

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

我的问题如下: -

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

对于谷歌浏览器和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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM