【问题标题】:Adding an event handler to a changing session value in asp.net c#在asp.net c#中将事件处理程序添加到更改的会话值中
【发布时间】:2012-06-14 19:41:43
【问题描述】:

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

【问题讨论】:

    标签: asp.net session login event-handling logout


    【解决方案1】:

    您需要在 global.asax 中处理此问题。

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

    【讨论】:

      【解决方案2】:

      您可以在 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 中检查它,还应该在用户实际注销的任何地方检查它。

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

      【讨论】:

        猜你喜欢
        • 2017-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 2018-08-24
        相关资源
        最近更新 更多