如何知道会话结束的页面?

时间:2016-09-13 21:26:03

标签: c# session timeout webpage sessionend

我在Global.asax.cs的Session_End()中

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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

一般情况,一旦会话到期,最终用户应重新进行身份验证,因此您应该直接重定向到登录页面,如果您使用的是Forms Authentication,那么您只需说FormsAuthentication.RedirectToLoginPage();

答案 1 :(得分:0)

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

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

(仅当会话状态HttpSessionState.Mode属性值为InProc时才会出现。否则事件不会被触发。)