2011-05-09 372 views
4

我使用ASP.Net + VSTS 2008 + .Net 3.5 + C#+ IIS 7.我想知道如果在服务器端,我调用response.redirect到另一个网址在同一个网站应用程序,会话是否会继续或终止?ASP.Net中response.redirect问题

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

由于事先 乔治

+0

如果在这种情况下有一些参考文件,它将会很棒。 – George2 2011-05-09 16:16:22

+1

+1教我新的东西,无疑会从我的代码中删除一些错误:) – 2011-05-09 16:22:00

回答

1

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

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

+0

Response.redirect将始终保持会话变量或不变? – George2 2011-05-09 16:19:58

+1

是的,它基本上只是一种手动点击链接的方式。 – 2011-05-09 16:22:01

+4

...或线程被中止,我相信这是默认的响应行为.Redirect – spender 2011-05-09 16:22:35

4

您可以使用需要bool为好,这并没有结束于响应的Response.Redirect的过载。

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

伯特兰勒罗伊覆盖它here

+0

谢谢你。我读了罗伊的回答,感到困惑。这是否意味着Response.Redirect(不指定false参数)将始终终止当前会话?而原因是Response.End被触发? – George2 2011-05-09 16:23:24

+1

@ George2:“_Response.End实际上停止了使用ThreadAbortException的任何地方的页面执行。 这里真正发生的事情是会话令牌在战斗中丢失了。传递'false'不会中止线程,并应保存会话令牌。 – Town 2011-05-09 16:30:07

+0

那么,这意味着使用Response.Redirect来传递session变量是不安全的? Response.Redirect使用false参数传递会话变量是否安全? – George2 2011-05-09 16:41:17

2

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

+0

“Response.Redirect会杀死你的会话,所以它不一定可用” - 你有任何文件可以参考吗? – George2 2011-05-09 16:21:17

+0

我试过了,似乎行为是随机的,有时它会丢失,有时它不会,任何想法? – George2 2011-05-09 16:24:56

+1

'Redirect'方法调用'ThreadAbortException'如下所述:http://msdn.microsoft.com/en-us/library/t9dwyts4%28v=VS.80%29.aspx你的意思是你已经尝试使用'False'参数? – keyboardP 2011-05-09 16:25:18

0

我的问题如下: -

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

对于Google Chrome和Firefox,会话值已移至下一页,但未在Internet Explorer中。

分辨率:我们已经创建了网址名称以“_”(下划线)

其他可能的解决方案:

  1. 使用Response.Redirect具有第二个参数为“假”,以避免页面执行从而避免丢失会话令牌。你必须使用URL如下。 Response.Redirect(“NextPage.aspx”,false)

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

0

响应。重定向(url,false)函数将改变会话如果url绝对url如果你不想松散会话使用绝对路径代替。

相关问题