السلام عليكم
السيشن هو متغير يحفظ في ذاكرة الخادم للمستخدم الحال ويتم انشاء سيشن افتراضي لكل مستخدم حالي
بشكل افتراضي ...عندما المستخدم يطلب الصفحة للمرة الأولى ...صفحة الويب تلقائيا تقوم باضافة session cookie في المتصفح .....هذا يسمى _ASP.NET_SessionID
تستطيع أن تخزن أي كائن في السيشن بالطريقة التالية :
كود:
Session( "myItem" ) = "Hello!"
الجملة السابقة تضيف item جديد باسم myItem الى ال session state وقيمته Hello!
بعد اضافة ال item الى ال session state ...تستطيع استرجاعه في أي صفحة قام المستخدم بزيارتها وتكون بالطريقة التالية
ولكن لا تنسى أن تقوم بالتحويل لأن السيشن يخزن على هيئة كائن
كود:
Response.Write(cstr( Session( "myItem" )) )
يجب أن تعلم أن ال item يكون خاص بالمستخدم ويتم حذفه عندما يغلق المستخدم متصفحه أو أنه لم يطلب الصفحة لمدة 20 دقيقة
ويجب أيضا أن تعلم أن كل item يتم اضافته يكون متعلق بالمستخدم فقط يعني بعبارة أخرى اذا قام مستخدم بطلب صفحة ستقوم باضافة item باسم myItem الى ال session state وتحتوى على القيمة Hello! وقام مستخدم آخر بطلب الصفحة لإضافة item باسم myItem الى ال session state وتحتوي على القيمة Goodbye فلن يحدث تضارب لأنه سيكون هناك نسختين منفصلتين لكل item اضيف الى ال session state خاص بكل مستخدم
ال objects في السيشن غير محدودة الحجم كما في الكوكيز وعلى سبيل المثال يمكن اضافة dataset الى ال session state بالطريقة التالية :
كود:
Session( "myDataSet" ) = DataSet_Name
يجب أن تعلم أنه يتم انشاء نسخة منفصلة لكل item يتم اضافته الى ال session state لكل مستخدم قام بطلب الصفحة
يعني اذا تم اضافة داتا ست تتكون من 400 سجل في ال session state في الصفحة وقام 500 شخص بطلب الصفحة ...سيكون موجود 500 نسخة من الداتا ست في الذاكرة
يتم حذف ال items في ال session state باستخدام الدالة remove أو الدالة removeAll
الدالة remove تقوم بحذف ال item الخاص للمسخدم الحالي ...وتكون الطريقة كالأتي :
كود:
Session.Remove( "myItem" )
أما الدالة removeAll تحذف جميع ال items المخزنة في ال session state للمستخدم الحالي وتكون الطريقة كالأتي
ويمكن اضاعة ال session state باحدى الطرق التالية :
1- اذا المستخدم قام بالوصول الى نفس الصفحة من خلال صفحة متصفح أخرى ...بالرغم من أن السيشن يبقى موجودا في حال لم تغلق الصفحة الأصلية التي فتحت من قبل ولكن المتصفح يختلف في معالجة هذا الموقف
2- اذا انتهى وقت السيشن يعني مر عليه 20 دقيقة بدون استخدامه
3- اذا المبرمج قام بانهاء السيشن باستدعاء الدالة session_Abandon() وهي دالة تقوم بحذف الحالي ويحذف كل الموجود في الذاكرة
كل client يحتاج لوجود session id لكل طلب ويتم انجاز ذلك باحدى الطريقتين
مثال على السيشن
1- انشأ صفحة تحتوي على Label و button كما في الصورة التالية :

2- أنشأ ملف global كما بالشكل التالي

3- وكتابة الكود التالي في دالة ال sessionStart الموجودة بداخل ملف ال global
كود:
Session.Add(“SomeValue”,Session.SessionID);
وهذه الجملة تعني انشاء سيشن باسم SomeValue وقيمته تكون قيمة عشوائيه يضعها ال asp.net وتكون خاصة بكل مستخدم
4- النقر نقرتين مزدوجتين على الزر الموجود في الصفحة التي تم انشاؤها من قبل وكتابة الكود التالي
كود:
ResultLabel.Text=Session[“SomeValue”].ToString();
وهي الجملة تعني تحويل قيمة السيشن الى string وتخزينه في ال Label
5- نقوم بالتنفيذ وستكون النتيجة كالتالي

وطبعا هذا ال string سيختلف من مستخدم لأخر ولتجربة ذلك ...قم بنسخ عنوان الصفحة ووضعة في صفحة نت جديدة وقم بالتنفيذ مرة أخرى وستلاحظ النتيجة وهو اختلاف ال string الظاهر
انتهى الدرس