【发布时间】:2009-05-18 22:54:25
【问题描述】:
在会话开始期间,可以访问请求对象。 Session End 怎么样,它仍然可以访问 Request 对象吗?例如,我想计算当前有多少浏览器连接到我的应用程序。
编辑 1:如果 Session End 无权访问请求对象,它可以访问什么信息?会话 ID 等?
编辑 2:如果 Session End 不能用于跟踪断开连接,如何在 ASP.Net 中跟踪断开连接?
谢谢
【问题讨论】:
在会话开始期间,可以访问请求对象。 Session End 怎么样,它仍然可以访问 Request 对象吗?例如,我想计算当前有多少浏览器连接到我的应用程序。
编辑 1:如果 Session End 无权访问请求对象,它可以访问什么信息?会话 ID 等?
编辑 2:如果 Session End 不能用于跟踪断开连接,如何在 ASP.Net 中跟踪断开连接?
谢谢
【问题讨论】:
不,Request 对象在 Session End 中不可用。
还要注意,Session End 仅在您从代码中调用 Session.Abandon() 时触发,而不是在 Session 由于自然超时或您有什么问题而过期时触发。因此,它不是用于跟踪断开连接的可靠方法。
【讨论】:
如果使用 InProc,Session_End 将被触发。
Session_End 将被触发 1) 在 n 分钟不活动后(n = 超时值),或 2) 如果有人调用 Session.Abandon()
如果关闭浏览器,Session_End 不会被触发。
Session_End 需要设置会话状态。
如果需要原始 Request.Browser 数据,应将其保存在 Session State 中。
在 Session_End 期间,它可以访问 Session State。
【讨论】:
Session_OnEnd 事件发生在 会话被放弃或超时。的 服务器内置对象,只有 应用程序对象、服务器对象和 会话对象对象可用。
备注
你不能调用 Server.MapPath Session_OnEnd 脚本中的方法。经过 默认情况下,Session_OnEnd 作为 匿名用户,定义为 应用。如果有 不是匿名用户或登录 对于匿名用户失败, OnEnd 函数将不会被调用,并且 将记录一个事件。
【讨论】: