آنچه تاكنون گفته شده است : 
|  بخش اول |  مفاهيم اوليه  | : |  ضرورت مديريت state در برنامه هاي وب | 
| بخش دوم |  view state     | : | نحوه ايمن سازي اطلاعات ذخيره شده در view state | 
| بخش سوم | view state  | : | نحوه نگهداري Member Variables و اشياء سفارشي | 
| بخش چهارم | cross-page posting | : | انتقال اطلاعات از يك صفحه به صفحه اي ديگر | 
| بخش پنجم | cross-page posting | : | نحوه دريافت اطلاعات  از صفحه مبداء | 
| بخش ششم | Query String  | : | نحوه انتقال اطلاعات بين صفحات | 
| بخش هفتم | كوكي هاي سفارشي |  | نحوه عملكرد كوكي هاي سفارشي | 
| بخش هشتم | Session State |  | مفاهيم و معماري session | 
 
در بخش هشتم  با مفاهيم و معماري session آشنا شديم . در اين بخش و قبل از پرداختن به نحوه پيكربندي session در برنامه هاي وب ، به بررسي يك نمونه مثال خواهيم پرداخت تا از اين رهگذر بتوانيم در عمل با متدها و خصلت هاي كلاس  HttpSessionState بيشتر آشنا شويم .  
مثال 
در اين مثال هدف آشنائي با نحوه ذخيره و بازيابي داده در session است . بدين منظور يك شي با نام Articles و شامل سه فيلد عمومي به شرح زير تعريف شده است  :
- 
Title : عنوان يك مقاله را در خود ذخيره مي نمايد .  
- 
Abstract : شرح مختصري از مقاله را در خود ذخيره مي نمايد .  
- 
ViewCount : تعداد  دفعات مشاهده يك مقاله را مشخص مي نمايد .  
شي فوق از يك  constructor  خاص استفاده مي نمايد تا فرآيند ايجاد و مقداردهي آن به سادگي انجام شود . 
| Public Class Articles 
 Public Title As String
 Public Abstract As String
 Public ViewCount As Integer
 
 Public Sub New(ByVal Title As String, ByVal Abstract As String, ByVal ViewCount As Integer)
 Me.Title = Title
 Me.Abstract = Abstract
 Me.ViewCount = ViewCount
 End Sub
 
 End Class
 | 
 
 اشياء Articles در زمان استقرار صفحه در حافظه ايجاد و در session state ذخيره مي گردند . در ادامه و پس از انتخاب يك آيتم توسط كاربر از طريق ليست موجود ، شي مرتبط با آيتم انتخاب شده از session بازيابي و اطلاعات مرتبط با آن در خروجي نمايش داده مي شود . 
| صفحه SessionStateExample.aspx | 
| <%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>
 
 <script runat="server">
 
 Public Class Articles
 Public Title As String
 Public Abstract As String
 Public ViewCount As Integer
 Public Sub New(ByVal Title As String, ByVal Abstract As String, ByVal ViewCount As Integer)
 Me.Title = Title
 Me.Abstract = Abstract
 Me.ViewCount = ViewCount
 End Sub
 End Class
 Protected SubPage_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load If Me.IsPostBack = False Then
 
| مرحله اول : ايجاد اشياء ' |     DimArticleInfo1 As New Articles("State Management در ASP. NET 2.0 (بخش هشتم) ", _ " بررسي Session State ", 43)
 Dim ArticleInfo2 As New Articles("State Management در ASP. NET 2.0 (بخش هفتم) ", _
 " كوكي هاي سفارشي و نحوه عملكرد آنها", 94)
 Dim ArticleInfo3 As New Articles("State Management در ASP. NET 2.0 (بخش ششم) ", _
 " نحوه انتقال اطلاعات بين صفحات با استفاده از Query String", 103)
 Dim ArticleInfo4 As New Articles(" State Management در ASP. NET 2.0 (بخش پنجم) ", _
 " نحوه دريافت اطلاعات از صفحه مبداء در cross-page posting", 99)
 
|  مرحله دوم : اضافه كردن اشياء به session state  ' |     Session("Article1") = ArticleInfo1Session("Article2") = ArticleInfo2
 Session("Article3") = ArticleInfo3
 Session("Article4") = ArticleInfo4
 
| مرحله سوم : اضافه كردن سطر به ليست  ' |     lstItems.Items.Clear()IflstItems.Items.Add(ArticleInfo1.Title)
 lstItems.Items.Add(ArticleInfo2.Title)
 lstItems.Items.Add(ArticleInfo3.Title)
 lstItems.Items.Add(ArticleInfo4.Title)
 
 End
 
|  نمايش برخي اطلاعات پايه در رابطه با session  'جهت بررسي اطلاعات پيكربندي '
 |   Dim strCookieLess As String Dim strNewSession As String
 
 If Session.IsCookieless Then
 strCookieLess = "بلي"
 Else
 strCookieLess = "خير"
 End If
 
 If Session.IsNewSession Then
 strNewSession = "بلي"
 Else
 strNewSession = "خير"
 End If
 
 lblSession.Text = "شناسه : " & Session.SessionID
 lblSession.Text &= "<br>تعداد اشياء : "
 lblSession.Text &= Session.Count.ToString()
 lblSession.Text &= "<br>مد : " & Session.Mode.ToString()
 lblSession.Text &= "<br>آيا session ايجاد شده Cookieless است؟ "
 lblSession.Text &= strCookieLess
 lblSession.Text &= "<br> آيا session جديد است ؟ "
 lblSession.Text &= strNewSession
 lblSession.Text &= "<br> اعتبار session (بر حسب دقيقه ) : "
 lblSession.Text &= Session.Timeout.ToString()
 End Sub
 ProtectedSub cmdMoreInfo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdMoreInfo.Click If lstItems.SelectedIndex = -1 Then
 lblRecord.Text = "آيتمي انتخاب نشده است"
 Else
 
|  مرحله اول :ايجاد نام كليد صحيح بر اساس ايندكس ' |    DimKey As String Key = "Article" & (lstItems.SelectedIndex + 1).ToString()
 
|   مرحله دوم : بازيابي اشياء از session state ' |    DimArticleInfo As Articles = CType(Session(Key), Articles) 
|  مرحله سوم : نمايش اطلاعات مرتبط با شي بازيابي شده  ' |    lblRecord.Text = "عنوان مقاله :"& ArticleInfo.Title lblRecord.Text &= "<br>شرح: "
 lblRecord.Text &= ArticleInfo.Abstract
 lblRecord.Text &= "<br>تعداد دفعات مشاهده : " & ArticleInfo.ViewCount.ToString()
 
 End If
 
 End Sub
 
 </script>
 
 <html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
 <head runat="server">
 <title>تست session </title>
 </head>
 <body>
 <form id="form1" runat="server">
 <asp:Label id="lblSession" runat="server" Width="472px" Height="61px" Font-Size="Smaller"
 Font-Names="Tahoma" Font-Bold="False"></asp:Label><br /><br />
 <div >
 <asp:ListBox id="lstItems" runat="server" Width="345px" Height="106px"
 Font-Names="Tahoma"></asp:ListBox><br /> <br />
 <asp:Button id="cmdMoreInfo" runat="server" Text="اطلاعات بيشتر "
 Font-Names="Tahoma"></asp:Button><br /><br /><br />
 <asp:Label id="lblRecord" runat="server" Font-Size="Small"
 Font-Names="Tahoma" ></asp:Label>
 </div>
 </form>
 </body>
 </html>
 
 | 
 
شكل 1 نحوه عملكرد و خروجي برنامه فوق را نشان مي دهد .

شكل 1:  نحوه عملكرد session state 
حتي المقدور مي بايست از تعداد session اندكي در برنامه استفاده گردد چراكه مديريت آنها مستلزم انجام عمليات اضافه و استفاده از منابع محدود موجود در سمت سرويس دهنده است . پياده كنندگان برنامه هاي وب براي رفع اين نگراني مي توانند يك دكمه Log out را در صفحه مورد نظر خود پيش بيني نمايند تا پس از كليك  بر روي آن ، با استفاده از متد  Session.Abandon اقدام به حذف session گردد ( آزاد سازي حافظه سرويس دهنده زودتر از موعد مقرر و مشخص شده توسط خصلت Timeout ) .
در بخش دهم بحث خود را در ارتباط با session state  ادامه داده و با نحوه پيكربندي آن در برنامه هاي وب آشنا خواهيم شد . 
برگرفته از سايت سخا روش