如何在asp.net mvc中订阅SessionStateItemExpireCallback
我对此进行了很多搜索,但找不到任何实际使用的特定示例。 MSDN 说了很多关于实现自定义会话状态提供程序的内容,但我不想这样做。任何人都可以建议我如何在会话过期时执行一些操作
用例: 会话超时 10 分钟。 用户打开页面并创建会话,应用程序将数据库中的用户标记为已登录。页面打开一分钟后,用户关闭浏览器,因此 9 分钟后会话将过期,应用程序应执行一些代码将用户标记为离线。
提前致谢!
I searched a lot about this but couldn't find any particular example of real usage. MSDN says a lot about implementing custom session state provider but I don't wanna do that. Could anyone advise how can I perform some actions when session expires
Usecase:
Session timeout 10 minutes.
User opens a page and session is created application marks user in database as logged in. One minute after page open user closes browser so in 9 minutes session will expire and app should execute some code to mark user as offline.
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试订阅 Global.asax 中的
Session_End
事件:您应该注意,只有在使用
InProc
会话时才会触发此事件。对于SqlServer
和StateServer
模式,永远不会调用此事件,因为在其相应会话状态提供程序的实现中,SetItemExpireCallback 方法只是返回false
。 引用:You could try subscribing for the
Session_End
event in Global.asax:You should note that this event is only triggered if you are using a
InProc
session. WithSqlServer
andStateServer
modes this event is never called simply because in the implementation of their corresponding session state providers the SetItemExpireCallback method simply returnfalse
. Quoting: