【问题标题】:Session variables in asp.netasp.net 中的会话变量
【发布时间】:2011-11-09 04:15:50
【问题描述】:

我有一个使用会话变量的 asp.net webapplicatoin。我在 session_end 被触发时清除会话值,但是当应用程序在关闭前一个窗口后在新窗口中打开时,会话值保留。

有没有办法可以摆脱会话值。

提前谢谢... 帕尼

【问题讨论】:

  • 我建议您在完成后立即清除会话值,而不是等待 session_end(可能会触发也可能不会触发)。
  • session_start 是“保证”触发的,但不幸的是 session_end 不是,所以不要依赖它。你可以使用注销事件吗?
  • 感谢您的回复,Brian 和 Michel。不幸的是,我没有注销选项,也无法清除会话值,因为它们在整个应用程序中都被使用。欢迎任何其他建议...

标签: asp.net session-variables


【解决方案1】:

新的windows/tabs不会创建新的会话,新的浏览器实例会。

另外,当会话结束时,会话变量就消失了。您无法控制 GC 何时将它们从内存中删除,但它们不再可访问。

【讨论】:

    【解决方案2】:

    简单地关闭窗口时会话不会结束。会话在到期时结束。 ASP.NET 无法知道用户是否关闭了窗口。见MSDN on SessionStateModule.End Event

    请参阅this answer 以获得更详尽的说明。

    在我的脑海中,您可以做的是检测用户何时关闭窗口,例如使用 jQuery 中的 unload() 事件,并向 Web 服务发送请求,然后结束会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-26
      • 2018-05-20
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      相关资源
      最近更新 更多