我应该在asp.net中声明一个会话变量

Vai*_*ain 7 .net c# asp.net session session-variables

我正在构建一个Asp.net应用程序.我需要在会话中保存HashTable.

在页面加载我正在写

 protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       Session["AttemptCount"]=new Hashtable(); //Because of this line.
    }   
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,当用户刷新页面时,会话["AttemptCount"]也会刷新.我想知道我应该在哪里申报

Session["AttemptCount"]=new Hashtable();
Run Code Online (Sandbox Code Playgroud)

所以我的看法不会被彻底改变.

编辑在Global.asax中,只要用户打开网站,此会话就会开始.我想仅在用户转到特定页面时才创建此会话.即Login.aspx

Nae*_*raz 16

Session_Start在你的Global.asax中的方法中这样做......

protected void Session_Start(object sender, EventArgs e)
{
    Session["AttemptCount"]=new Hashtable();
}
Run Code Online (Sandbox Code Playgroud)

更新:

然后只需检查会话变量是否存在,如果它不仅创建变量.你可以把它粘在一个房子里,让东西变得更干净......

public Hashtable AttemptCount
{
    get 
    {
        if (Session["AttemptCount"] == null)
            Session["AttemptCount"]=new Hashtable();
        return Session["AttemptCount"];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以AttemptCount随时随地打电话给物业......

public void doEvent(object sender, EventArgs e)
{
    AttemptCount.Add("Key1", "Value1");
}
Run Code Online (Sandbox Code Playgroud)

  • 通过禁用会话cookie,人们可以很容易地到处走动. (3认同)