【问题标题】:Session variables are lost after server and/or client-side page redirect服务器和/或客户端页面重定向后会话变量丢失
【发布时间】:2012-05-30 20:11:20
【问题描述】:

设置:

我有一个带有按钮的登录页面。当用户单击按钮时,会发生回发。在按钮的单击处理程序中,我设置了几个会话变量。然后我将用户重定向到另一个页面。

问题:

当其他页面加载时,SessionID 是相同的(同一个会话仍然存在),但是所有会话变量都消失了。我已经在谷歌上广泛搜索了这个问题,尝试了所有不同的解决方案(而且有很多),但没有一个对我有用。

我试过了:

Response.Redirect("NewPage.aspx", false);

我还尝试添加一个元刷新标签(动态),它可以避开与使用 Response.Redirect(...) 相关的任何潜在问题。

<meta http-equiv="refresh" content="0;URL=NewPage.aspx" />

在这两种情况下,重定向都会成功,但会话变量不再存在。我已经广泛检查了所有 IIS 设置,分析了浏览器和服务器之间交换的数据,但都无济于事。

另外,在同一个项目上工作的两个同事(使用相同配置的开发机器)没有这个问题!

问题:

对于这个问题是否有合理的解释,或者我是否以某种方式侮辱或冒犯了我的开发 PC,它现在是否正在报复我?

【问题讨论】:

  • 这就是为什么我们必须尊重我们的电脑:)。您使用什么会话类型?数据库或inproc。如果有任何情况下重定向后您的页面有错误并再次更改此会话?您是否尝试使用第二个参数 true 进行重定向?
  • @Aristos 会话类型为 inproc。我尝试将第二个参数设置为 true,但这并没有改变任何事情。
  • 您是否运行过病毒扫描程序?如果它触及 Web.Config 之类的任何内容,它将自动重新启动应用程序,但我想这会创建一个新的 sessionID
  • @KevinMain 我已禁用 Symantec Endpoint Protection 但这并没有解决问题。
  • 您可以尝试将它们放在数据库中以检查是否是问题所在。您还可以在页面卸载时设置断点,以查看重定向之前页面退出时是否存在会话变量

标签: asp.net html redirect response.redirect


【解决方案1】:

我记得在异步回发期间调用 response.redirect() 时看到过这个问题。如果您使用的是 UpdatePanel,请尝试将其删除以查看是否可以解决问题。如果这是问题所在,那么我认为这与旧版本的 Ajax 库中的错误有关。由于您没有提及版本信息,我认为这是一个合理的假设。

【讨论】:

  • 页面上没有更新面板。母版页上有 ScriptManager 控件,但删除它并不能解决问题。
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2023-03-29
  • 2010-12-24
  • 2016-01-09
  • 2014-08-14
相关资源
最近更新 更多