2013-04-10 126 views
3

我的问题是,一旦Session_End在我的Global.asax中执行,HttpContext.Current对象不再存在 - 可能会像预期的那样,我会想象的。所以,我试图做的是一旦会话结束,为当前登录的用户更新我的登录表并将他们的LoggedIn状态设置为False。这里是我的Session_End中:ASP.NET MVC4 - Session_End - 如何在Global.asax的Session_End中获取当前登录的用户名?

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

正如你可能已经猜到了,我可以尝试通过:

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

但此对象不再存在,因为我只能想象,它已经被处理掉。那么,有什么方法可以抓住当前(或之前)当前的用户名吗?

+2

只是一个评论:如果您正在考虑稍后部署到Web场或在SQL Server或其他变体中使用会话状态,请注意Session_End事件可能不会在某些配置上触发 – 2013-04-10 22:55:33

+0

感谢那篇信息。我今晚的研究也发现了这些信息。 – 2013-04-11 02:05:13

回答

3

你可以通过在会话中存储你想要的信息(在这种情况下是用户名)来做到这一点。您可以在用户通过身份验证时进行存储。

+0

这工作完美。谢谢。 – 2013-04-11 14:49:12

相关问题