我在Global.asax.cs的Session_End()中
只有在特定页面上结束会话时,才需要执行某项操作。参数(sender和eventArgs)没有任何帮助。有没有办法找出用户所在的最后一页?
提前致谢。
答案 0 :(得分:0)
您可以使用HttpContext.Request
属性,但不确定会话到期后是否仍然有效。
在这种情况下,您需要在每次用户请求新页面时在cookie中明确写入页面URL。这样,即使会话过期,您也可以检查cookie对象并查看最后请求的页面是什么。
一般情况,一旦会话到期,最终用户应重新进行身份验证,因此您应该直接重定向到登录页面,如果您使用的是Forms Authentication
,那么您只需说FormsAuthentication.RedirectToLoginPage();
答案 1 :(得分:0)
您可以存储每个请求在Session中访问的最后一页的URL。这样,当会话结束时(global.asax Session_End),您可以在会话结束前阅读用户上次访问过的页面。
这是因为大多数事件都是由请求触发的,但除非明确放弃,否则会话结束是由缺乏活动引起的。当没有一段时间的请求时,由服务器确定。根据定义,来自用户的任何通信都不会表明会话正在结束。他们可能在五分钟前关闭了他们的浏览器。
(仅当会话状态HttpSessionState.Mode属性值为InProc时才会出现。否则事件不会被触发。)