0

我在 Global.asax.cs 的 Session_End()

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

提前致谢。

4

2 回答 2

0

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

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

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

于 2016-09-13T21:38:33.760 回答
0

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

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

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

于 2016-09-14T01:35:29.620 回答