在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属性吗?
您将其存储在ViewState
:中
ViewState["StateBag"] = _Bag;
并从Session
:中检索
return (StateBag)Session["NewSession"];
ViewState
和Session
是两个完全不同的东西,它们不共享相同的对象。您需要选择一个位置来保存数据,并始终从同一位置检索数据。
注意:ViewState
将数据呈现给客户端,因此我不建议使用它来存储任何您不希望客户端能够看到/修改的内容。