Where I should declare a session variable in asp.net
Do it in the Session_Start
method in your Global.asax like so...
protected void Session_Start(object sender, EventArgs e){ Session["AttemptCount"]=new Hashtable();}
Update:
Then simply just do a check to see if the session variable exists, if it doesn't only then create the variable. You could stick it in a property to make things cleaner like so...
public Hashtable AttemptCount{ get { if (Session["AttemptCount"] == null) Session["AttemptCount"]=new Hashtable(); return Session["AttemptCount"]; }}
And then you could just call on the property AttemptCount
wherever you need like so...
public void doEvent(object sender, EventArgs e){ AttemptCount.Add("Key1", "Value1");}
You could make a property like this in your page:
protected Hashtable AttemptCount{ get { if (Session["AttemptCount"] == null) Session["AttemptCount"] = new Hashtable(); return Session["AttemptCount"] as Hashtable; }}
then you can use it without having to worry:
protected void Page_Load(object sender, EventArgs e){ this.AttemptCount.Add("key", "value");}
test if it exists first
protected void Page_Load(object sender, EventArgs e){ if (!Page.IsPostBack) { if(Session["AttemptCount"] == null) { Session["AttemptCount"]=new Hashtable(); //Because of this line. } } }
though the session_start is better, you only need to uses it on one page but you can create it for each session.