2016-09-13 129 views
0

我在Global.asax.cs的Session_End()中如何知道会话结束的页面?

只有会话在特定页面上结束时,我才需要执行该操作。参数(sender和eventArgs)没有任何帮助。有没有办法找出用户所在的最后一页?

在此先感谢。

回答

0

您可能可以使用HttpContext.Request属性,但不确定会话过期后它是否仍然有效。

在这种情况下,每次用户请求新页面时,都需要在Cookie中明确写入页面URL。这样,即使会话过期,您也可以检查cookie对象并查看最后请求的页面。

一般情况下,一旦会话过期最终用户应重新认证他自己,因此你应该重定向到直接登录页面,如果你正在使用Forms Authentication那么你可以说FormsAuthentication.RedirectToLoginPage();

+0

的问题是,我不想做一个登录重定向。这是一个数据库操作,只有当会话在特定页面上超时时才需要触发。让我看看HttpContext.Request属性是否有帮助。 – Pallavi

+1

所以你只需要最后一次请求的页面?在这种情况下,您可以将cookies或pageurl存储在cookie中。 – Rahul

0

您可以储存的网址在每个请求的Session中访问最后一页。通过这种方式,当会话结束时(global.asax Session_End),您可以阅读用户在会话结束前上次访问的页面。

这是因为大多数事件都是由请求触发的,但除非明确放弃,否则会话结束是由缺少活动引起的。它由服务器在没有请求一段时间时确定。根据定义,不会有来自用户的任何通信表明会话正在结束。他们可能在五分钟前关闭了浏览器。

(这是只有在会话状态HttpSessionState.Mode属性值是InProc,否则该事件将不会触发。)