در اين مثال هدف آشنائی با نحوه ذخيره و بازيابی داده در session است . بدين منظور يك شی با نام Articles و شامل سه فيلد عمومی به شرح زير تعريف شده است :
• Title : عنوان يك مقاله را در خود ذخيره می نمايد .
• Abstract : شرح مختصری از مقاله را در خود ذخيره می نمايد .
• ViewCount : تعداد دفعات مشاهده يك مقاله را مشخص می نمايد .
شی فوق از يك constructor خاص استفاده می نمايد تا فرآيند ايجاد و مقداردهی آن به سادگی انجام شود .
اشياء Articles در زمان استقرار صفحه در حافظه ايجاد و در session state ذخيره می گردند . در ادامه و پس از انتخاب يك آيتم توسط كاربر از طريق ليست موجود ، شی مرتبط با آيتم انتخاب شده از session بازيابی و اطلاعات مرتبط با آن در خروجی نمايش داده می شود .
<%@ 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 Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
If Me.IsPostBack = False Then
مرحله اول : ايجاد اشياء '
Dim ArticleInfo1 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") = ArticleInfo1
Session("Article2") = ArticleInfo2
Session("Article3") = ArticleInfo3
Session("Article4") = ArticleInfo4
مرحله سوم : اضافه كردن سطر به ليست '
lstItems.Items.Clear()
lstItems.Items.Add(ArticleInfo1.Title)
lstItems.Items.Add(ArticleInfo2.Title)
lstItems.Items.Add(ArticleInfo3.Title)
lstItems.Items.Add(ArticleInfo4.Title)
End If
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
Protected Sub cmdMoreInfo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdMoreInfo.Click
If lstItems.SelectedIndex = -1 Then
lblRecord.Text = "آيتمی انتخاب نشده است"
Else
مرحله اول :ايجاد نام كليد صحيح بر اساس ايندكس '
Dim Key As String
Key = "Article" & (lstItems.SelectedIndex + 1).ToString()
session state مرحله دوم : بازيابی اشياء از '
Dim ArticleInfo 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>
حتی المقدور می بايست از تعداد session اندكی در برنامه استفاده گردد چراكه مديريت آنها مستلزم انجام عمليات اضافه و استفاده از منابع محدود موجود در سمت سرويس دهنده است . پياده كنندگان برنامه های وب برای رفع اين نگرانی می توانند يك دكمه Log out را در صفحه مورد نظر خود پيش بينی نمايند تا پس از كليك بر روی آن ، با استفاده از متد Session.Abandon اقدام به حذف session گردد ( آزاد سازی حافظه سرويس دهنده زودتر از موعد مقرر و مشخص شده توسط خصلت Timeout ) .