在C#中跟踪新会话的开始

本文关键字:会话 开始 跟踪 新会话 | 更新日期: 2023-09-27 18:27:18

嗨,我正在尝试开发一种功能,该功能将跟踪每次在web应用程序(即用户登录)中创建新会话的情况。

我创建了一个名为"StateBag.cs"的类

using System;
using System.Text;
[Serializable()]
public class StateBag
{
    #region Business Methods
    // To catch the event of a New Session //
    private bool _NewSession = false;
    public bool NewSession
    {
        get { return _NewSession; }
        set { _NewSession = value; }
    }
    #endregion
}

在登录页面上,就在登录之前:-

// Declaration Region. //
private StateBag _Bag;

    if (Session.IsNewSession)
    {
        _Bag = new StateBag();
        _Bag.NewSession = true;
        // ViewState["StateBag"] = _Bag;
        Session["NewSession"] = _Bag;
    }

在主页上,成功登录后:-

// Declaration region. //
StateBag _Bag
{
    get
    {
        return (StateBag)Session["NewSession"];
    }
}

    if (_Bag.NewSession == true)
    {
        // Do my stuff........ //
        _Bag.NewSession = false;  // set new Session back to false//
    }

我在检索标签(_B)时遇到问题。。。它返回为Null。。。

因此出现错误消息:-"对象引用未设置为对象的实例。"

有人能帮我检索我在登录页面上设置为"True"的NewSession属性吗?

在C#中跟踪新会话的开始

您将其存储在ViewState:中

ViewState["StateBag"] = _Bag;

并从Session:中检索

return (StateBag)Session["NewSession"];

ViewStateSession是两个完全不同的东西,它们不共享相同的对象。您需要选择一个位置来保存数据,并始终从同一位置检索数据。

注意:ViewState将数据呈现给客户端,因此我不建议使用它来存储任何您不希望客户端能够看到/修改的内容。