How to use session state in asp.net

How to use Session
The Session is an important state management tool in the asp.net application. Session state allows us to store and retrieve values for a user when navigating 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. The Web server does not know about the variables of the previous page request. Asp.net session state can identify the 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.

The Session variables are stored in a SessionStateItemCollection object that we can expose through the HttpContext Session property. The HttpContext Session property gets the HttpSessionState object for the current HTTP request. Session property allows us to have 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 the session variable by referring to the session variable by name for 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 gets 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 the session id in the URL for a cookieless session.

Asp.net session state supports the following 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 the default storage that stores session data in memory on the web server. SqlServer mode store session state data in a SQL Server Database. Custom mode allows us to store session data in custom storage. StateServer mode store session data in a separate process called the asp.net state service. Off mode disable session state.

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

The following asp.net c# example code demonstrates to 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 C# Tutorials