会话到期后会发生什么?

时间:2014-07-01 23:49:11

标签: c# asp.net

当会话到期时,asp.net在后台做什么?会话是否已完全处理,或者我是否需要在Global.asax中的Session.Abandon();事件中添加Session_End之类的内容?

3 个答案:

答案 0 :(得分:3)

内存中状态 - 从会话列表中删除对象,并调用Session_End。对于SQL会话状态,没有任何事情发生,并且将来不再为具有相同会话ID的请求返回数据,因为它与(ID +未过期)条件不匹配。

您无需在Session.Abandon()中调用Session_End,因为该事件在会话过期时调用(这正是Abandon所做的)。

注释

  • 使用进程外会话状态(状态服务上的SQL)的普通Web应用程序将不会收到Session_End事件,因为out-ouf-process状态不会触发它。
  • 如果您需要清理SQL会话状态,则可以运行clenaup任务,删除过期会话的行。

答案 1 :(得分:1)

会话完全处理完毕。你不需要做任何特别的事情。 Session_End是一个允许您在会话处理时执行操作的事件。

Session.Abandon()是一个允许您随意终止会话的命令。

注意:如果您未在Session中添加任何变量,则Session_End将无法触发。

答案 2 :(得分:1)

如果您使用inproc会话提供程序,会话将被清除,因此您不需要致电Session.Abandon()