How to use session state in asp.net

How to use Session
Session is an important state management tool in asp.net application. session state allow us to store and retrieve values for a user when navigates asp.net pages in an asp.net web application. web server treats each HTTP request for a web page as an independent request because HTTP is a stateless protocol. web server does not know about variables of the previous page request. asp.net session state can identify same browser request during a limited time window as a session and allow to persist values for that session.

asp.net have more state management tools such as application state, profile properties, cashing, view state, cookies and query string.

session variables are stored in a SessionStateItemCollection object that we can expose through HttpContext.Session property. HttpContext.Session property get the HttpSessionState object for the current http request. Session property allow us to programmatic access to the properties and methods of the HttpSessionState class. session variables are exposed through the Session property of the Page object.

session variable can be any valid .net framework type. session variables collection index by variable name or by an integer index. asp.net developers can create session variable by referring to the session variable by name as example Session["Color"] = TextBox2.Text.ToString();. we don't need to declare a session variable or explicitly add it to the collection.

HttpSessionState.SessionID property get the unique identifier for the session. SessionID property is used to uniquely identify a browser with session data on the web server. each page request in the application is examined by a SessionID value sent from the browser.

SessionID values are stored in a cookie. asp.net developers also can configure an application to store session id in the url for a cookieless session.

asp.net session state support the folloing storage options to store session data those are InProc, StateServer, SqlServer and Custom. each storage option is identified by a value in the SessionStateMode enumeration. InProc is default storage that store session date in memory on the web server. SqlServer mode store session state data in a Sql Server Database. Custom mode allow us to store session data in a custom storage. StateServer mode store session data in a separate process which called the asp.net state service. Off mode disable session state.

we can access the above session variable by this way string colorName = (string)(Session["Color"]);.

the following asp.net c# example code demonstrate us how can we use session state in an asp.net web application.
Session.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">
    protected void Button1_Click(object sender, System.EventArgs e) {
        Session["Name"] = TextBox1.Text.ToString();
        Session["Color"] = TextBox2.Text.ToString();
        Label1.Text = "Session saved!";
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>asp.net session example: how to use session in asp.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:Red">asp.net session example</h2>
        <asp:Label ID="Label1" runat="server" ForeColor="Crimson">
        </asp:Label>
        <br /><br />
        <asp:Label ID="Label2" runat="server" Text="Name">
        </asp:Label>
        <asp:TextBox ID="TextBox1" runat="server">
        </asp:TextBox>
        <br />
        <asp:Label ID="Label3" runat="server" Text="Favorite Color">
        </asp:Label>
        <asp:TextBox ID="TextBox2" runat="server">
        </asp:TextBox>
        <br />
        <asp:Button 
            ID="Button1" 
            runat="server" 
            Font-Bold="true" 
            ForeColor="DodgerBlue"
            Text="Save Into Session" 
            OnClick="Button1_Click"
            />
        <br /><br />
        <asp:HyperLink 
            ID="HyperLink1" 
            runat="server" 
            Text="Go for session test"
            NavigateUrl="~/SessionTest.aspx">
        </asp:HyperLink>            
    </div>
    </form>
</body>
</html>
SessionTest.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">
    protected void Page_Load(object sender, System.EventArgs e) {
        label1.Text = "Hi " + Session["Name"];
        label1.Text += "!<br />Your favorite color is " + Session["Color"];
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:Navy">asp.net session example</h2>
        <asp:Label 
            ID="label1" 
            runat="server" 
            Font-Size="Larger"
            ForeColor="SeaGreen"
            >
        </asp:Label>
        <br /><br />
        <asp:HyperLink 
            ID="HyperLink1" 
            runat="server" 
            Text="Go session page"
            NavigateUrl="~/Session.aspx">
        </asp:HyperLink>            
        
    </div>
    </form>
</body>
</html>
More asp.net examples