在asp.net core 2.1中捕获服务器端的会话超时

2024-01-11

我需要做点什么会议结束事件。 我怎样才能参加这个活动? 与此事件类似的任何事情可能会超时?


ASP.NET 有一个Session_OnEnd您可以在 Global.asax 中注册事件,但即使如此,它也非常不可靠:您只能将它用于进程内会话,并且它只能监视会话过期,而不能监视用户执行关闭浏览器窗口之类的操作。

不过,ASP.NET Core 没有类似的东西,主要是因为它确实没有意义。最重要的是,ASP.NET Core 是为扩展而设计的,是进程中的东西anything是的对立面。会话存储默认是分布式的。即使您确实使用内存中会话,它仍然使用以下实现IDistributedCache。拥有分布式会话存储使得监控过期变得站不住脚,因此尚未添加此类功能。

更重要的是,会话不会主动过期。相反,当用户在允许会话过期后下一次发回会话 cookie 时,会话就会被销毁并创建一个新会话。此外,会话还采用滑动过期时间,因此只要用户在超时窗口内保持活动状态,会话实际上就永远不会过期。

长话短说,你所寻找的东西是不可能的。然而,这确实有点令人尖叫的 XY 问题。您需要解决某种问题 (X),并且您已决定解决该问题的方法是在会话过期时执行某些操作 (Y)。但是,您也无法弄清楚如何做 Y,因此您在问有关 Y 的问题,而实际上您应该问有关 X 的问题。我建议创建一个有关actual您需要解决的问题;可能有更好的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在asp.net core 2.1中捕获服务器端的会话超时 的相关文章

随机推荐