ASP.NET MVC4 - Session_End - 如何在Global.asax的Session_End事件中获取当前已登录用户的名称?

3

我的问题是一旦Global.asax中的Session_End执行,HttpContext.Current对象就不存在了-我想这可能是意料之中的。所以,我试图在会话结束后更新我的Logins表,将当前登录用户的LoggedIn状态设置为False。以下是我的Session_End:

protected void Session_End(object sender, EventArgs e)
{
    Helpers.OperationContext.UpdateIndividualLogin();
}

我可以尝试传入以下内容,你可能已经猜到了:

System.Web.HttpContext.Current.User.Identity.Name

但是这个对象已经不存在了,因为我只能想象它已经被处理掉了。那么,有没有办法获取当前(或以前的)用户的名称?


2
只是一条注释:如果您考虑以后部署到 Web Farm 或在 SQL Server 中使用会话状态或其他变体,请注意某些配置可能不会触发 Session_End 事件。 - Pablo Romeo
谢谢你提供这个信息。今晚我的研究也发现了这个信息。 - Mike Marks
1个回答

4

您可以通过将想要存储的信息(在此示例中为用户名)存储在Session中来实现此操作。可以在用户经过身份验证时进行存储。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接