我需要对会话结束事件做一些事情。我怎样才能参加这个活动?与此事件类似的任何事情都可能超时?
ASP.NET 有一个Session_OnEnd您可以在 Global.asax 中注册的事件,但即便如此,它仍然非常不可靠:您只能将它与进程内会话一起使用,并且它只能监视会话过期,而不能在用户执行诸如关闭浏览器窗口。
不过,ASP.NET Core 没有任何类似之处,主要是因为它确实没有意义。最重要的是,ASP.NET Core 是为规模而设计的,进程内的任何东西都是对立的。默认情况下分发会话存储。即使您确实使用内存中会话,它仍然使用IDistributedCache. 拥有分布式会话存储使得监控过期变得站不住脚,因此尚未添加此类功能。
更重要的是,会话不会主动过期。相反,当用户下一次发回会话 cookie 时,在允许会话过期后,会话被销毁并创建一个新会话。会话也采用滑动过期,因此只要用户在超时窗口内保持活动状态,会话将有效地永不过期。
长期和短期,您正在寻找的东西是不可能的。然而,这确实有点尖叫 XY 问题。您有一些需要解决的问题 (X),并且您已决定解决它的方法是在会话到期 (Y) 时做一些事情。然而,你也无法弄清楚如何做 Y,所以你问了一个关于 Y 的问题,而你真正应该问的是 X。我建议创建一个关于你需要解决的实际问题的新问题;可能有更好的方法。
| 归档时间: |
|
| 查看次数: |
5256 次 |
| 最近记录: |