将事件处理程序添加到 asp.net c# 中更改的会话值



是否可以使用 c# 将事件处理程序添加到 asp.net 会话值?我计划在用户登录和注销时更新数据库,并使用会话值控制登录和注销,但会话可能会在没有用户单击的情况下结束,例如超时,因此我想添加一个事件处理程序到"isloggedin"会话值。

你需要在global.asax中处理这个问题。

protected void Session_Start(Object sender, EventArgs e) 
{
 //your code
}
protected void Session_End(Object sender, EventArgs e) 
{
 //your code
}

您可以在global.asax中实现Session_End方法。 在那里,您将从会话中检索所需的信息,并执行所需的操作(例如在数据库中为用户设置注销标志):

以下是我所做的事情的一个例子,尽管您可以根据需要对其进行定制:

void Session_End(object sender, EventArgs e)
{
    SessionPlayerContext context = (SessionPlayerContext)this.Session[Constants.SessionKeys.UserContext];
    if (context != null)
        PlayerManager.SetPlayerOnlineStatus(context.PlayerID, false);
}

关键是我正在获取我之前存储在会话中的用户对象(当用户登录时),如果它存在,我将用户标记为在数据库中注销(通过 PlayerManager)

您不仅应该在Session_End中检查它,而且还应该在用户物理注销的任何位置检查它。

至于将用户设置为已登录,您将在用户实际登录时进行处理。

相关内容

  • 没有找到相关文章

最新更新