我目前正在尝试编写一些代码,以便在用户放弃 session (通过超时或注销)后进行一些整理,但希望访问 User 对象,以便我知道该 session 属于谁到。
不幸的是 HttpContext 为空,所以我无法直接访问 HttpContext.User 或 HttpContext.User.IsInRole 甚至身份验证 cookie。我理解这背后的原因,但想知道当 session 超时时是否有其他方法可以访问此信息?
除了复制 session 中的一些信息的明显答案之外。
谢谢。
最佳答案
您可以使用Global.asax的Session_End事件。当 session 过期时,会自动调用 Session_End 事件。
问题是在没有当前请求的情况下调用 Session_End 事件。结果,Session_End 中的 HttpContext.Current 为 null。
如果您想获取用户信息,则需要在用户成功登录后立即将其保存在 Session 中。
private void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set
// to StateServer or SQLServer, the event is not raised.
var userName = Session["UserName"];
var sessionId = Session.SessionID;
}
关于asp.net-mvc - session 结束时访问成员(member)用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20107196/