获取Session_OnEnd中的用户

时间:2014-02-10 18:12:36

标签: c# asp.net-mvc asp.net-mvc-4

我有一个简单的问题 - 如何在Global.asax的Session_OnEnd()中获取当前经过身份验证的用户?

我要做的是:

    public void Session_OnEnd()
    {
        string user = User.Identity.Name;
    }

但是我得到了例外情况“用户在此上下文中不可用。” 如何以其他方式获得当前用户? 我应该在登录时将名称存储在会话变量中吗?这不是多余的吗?

1 个答案:

答案 0 :(得分:3)

会话(主要)在一段时间不活动后在服务器上结束。因此,没有请求,因此此时没有可用的用户身份(因为没有用于标识用户的身份验证令牌)。

所以你是对的,如果你需要在会​​话结束时知道用户的名字,那么它需要是Session中的值。这可能看起来有点多余,但如果这是你需要的话,它将是你唯一的选择。