我需要在global.asax.cs文件的Session_End事件中访问Session变量,但HttpContext.Current为null,因此无法访问任何Session变量。
a) 我能以不同的方式访问用户会话,或者
b) 有没有其他在Session_End之前的事件,我可以访问用户的会话变量?
HttpContext.Current
在 Session_End
中不可用,但您可以直接访问会话实例,方法是使用 this.Session
。
除非您使用Session_End来执行会话超时时的操作,否则依赖Session_End并不是一个好主意。
我认为没有可靠的方法来捕获用户会话的结束(例如当他们关闭浏览器时)。
你想做什么?
在 Session_End 之前没有事件可以用来访问 Session 对象。
如果你存储了与上次使用 Session 对象相关的操作时间戳,然后检查它,你就可以大致知道何时应该结束。
(基于你的 IIS 设置/配置)。
但是访问它的行为会延长 Session 对象的生命周期。
当然,你需要以某种方式进行检查,可以使用隐藏的 Ajax 回发触发事件或类似的方法。
但实际上我不建议这样做。你为什么需要这样做?