2011-06-09 45 views
1

编辑登录后ASP .NET会话重置吗?

这个问题似乎已经奇怪地消失了。我的环境一定是有些古怪的东西。我正在投票结束这个问题。


当用户登录时,我用来自Login页面代码隐藏的一堆数据给会话充气。然后我将用户重定向到应用程序中的其他页面。我还有一些会话恢复逻辑,当用户的会话过期时,会根据身份验证票据重新加载会话。

似乎在发生的事情是,我用来自登录页面的一堆数据膨胀用户的会话,然后重定向它们,并且我重定向到的页面请求似乎没有会话,所以应用程序必须重新充气。我不明白这一点 - 我查看了Cookie,会话ID没有改变,我也没有在代码中的任何地方重置会话数据。这是一个ASP .NET'feauture'吗?我正在使用ASP .NET 4.0。

编辑:

澄清:登录请求(在点击甚至登录按钮)时的会话被充气。在下一次请求期间,不会显示该会话已经被填充,所以我最终不得不重新膨胀会话。在此之后用户提出的任何请求,会话似乎都会“粘住”,并且我为随后的请求提供适当膨胀的会话。

+0

在页面循环中,您是否在登录时填充会话 - 在按钮中单击?你的所有网页是否位于同一个域名下?你是否启用了会话? – Paddy 2011-06-09 13:03:18

+0

我相信我已经在刚刚提出的问题的版本中解决了您的问题。 – 2011-06-09 14:17:09

回答

1

要回答你的问题SessionState数据独立于登录/注销。

数据可能从SessionState“消失”的原因有几个。

  • 如果您在Web场上使用InProcSessionState,用户可以有一个后续请求可以由不同的机器在农场服务。
  • SessionState可以清除,如果它变得太满(像缓存)。
  • 如果您使用的是自定义SessionStateStoreProvider,则可能无法正确保存/检索SessionState
+0

所有好的想法。但是,我没有使用网络农场(这是在我的本地盒子上),会话未满,我没有使用自定义的SessionStateStoreProvider - 我正在使用InProc。会话在登录请求期间膨胀,然后下一个请求,我最终不得不重新膨胀会话,并且之后的任何请求,它似乎“坚持”,并从这一点我有正确的膨胀会话。 – 2011-06-09 14:12:43