我可以使用 c# 将事件处理程序添加到 asp.net 中的会话值吗?我计划在用户登录和注销时更新数据库,并使用会话值控制登录和注销,但是会话可能会在没有用户点击的情况下结束,比如超时,所以我想添加一个事件处理程序到“ isloggedin”会话值。
问问题
1479 次
2 回答
2
你需要在 global.asax 中处理这个问题。
protected void Session_Start(Object sender, EventArgs e)
{
//your code
}
protected void Session_End(Object sender, EventArgs e)
{
//your code
}
于 2012-06-14T19:44:29.637 回答
1
您可以Session_End
在 global.asax 中实现该方法。在那里,您将从会话中检索所需的信息,并执行所需的操作(例如在数据库中为用户设置注销标志):
这是我所做的一个示例,尽管您可以根据需要对其进行调整:
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
,而且还应该在用户实际注销的任何地方检查它。
至于将用户设置为已登录,您将在用户物理登录时处理。
于 2012-06-14T19:46:20.543 回答