我有一个简单的问题 - 如何在Global.asax的Session_OnEnd()中获取当前经过身份验证的用户?
我要做的是:
public void Session_OnEnd()
{
string user = User.Identity.Name;
}
但是我得到了例外情况“用户在此上下文中不可用。” 如何以其他方式获得当前用户? 我应该在登录时将名称存储在会话变量中吗?这不是多余的吗?
答案 0 :(得分:3)
会话(主要)在一段时间不活动后在服务器上结束。因此,没有请求,因此此时没有可用的用户身份(因为没有用于标识用户的身份验证令牌)。
所以你是对的,如果你需要在会话结束时知道用户的名字,那么它需要是Session
中的值。这可能看起来有点多余,但如果这是你需要的话,它将是你唯一的选择。