سؤال

ماهو الفرق بين Session.Abandon() و Session.Clear() في ASP.NET؟

هل كانت مفيدة؟

المحلول

Session.Abandon() سينهي الجلسة الحالية. Session_End سيتم إطلاقه وسيقوم الطلب التالي بإطلاق النار Session_Start حدث.

Session.Clear سيقوم فقط بمسح بيانات الجلسة وستبقى الجلسة على قيد الحياة.

سيبقى معرف الجلسة كما هو في كلتا الحالتين ، طالما لم يتم إغلاق المتصفح.

شيء صغير:

Session.Abandon(); يلغي التيار Session.

Session.Clear(); يمسح جميع القيم من Session دولة.

نصائح أخرى

Session.Abandon() 

سوف يدمر/قتل الجلسة بأكملها.

Session.Clear()

يزيل/مسح بيانات الجلسة (أي المفاتيح والقيم من الجلسة الحالية) ولكن الجلسة ستكون حية.

قارن عن طريقة session.abandon () ، Session.clear () لا تنشئ الجلسة الجديدة ، فهي تجعل جميع المتغيرات في الجلسة إلى Null.

سيبقى معرف الجلسة نفسه في كلتا الحالتين ، طالما لم يتم إغلاق المتصفح.

بعض الأشياء التي يجب ملاحظتها هنا من تجربتي:

Session.Abandon() لا يبطل الجلسة الحالية. الطلبات القديمة تنفذ بشكل جيد إذا قمت بإعادة تشغيلها.

ولكن ، بعد أن تسميها ، ليس لدى محتويات قاموس الجلسة المهجورة أي تأثير دائم. يحصل الطلب التالي على قاموس جلسة جديدة جديدة (حتى لو كنت تستخدم معرف الجلسة نفسه عن طريق إعادة تشغيل طلب سابق) ولا توجد أي من التغييرات السابقة عليه (بعد استدعاء الطريقة).

لذلك ، يبدو ذلك Session.Abandon() يتوقف تمامًا عن استمرار الجلسة بأكملها Session.Clear() يزيل فقط بياناته.

وأيضًا ، إذا كنت بحاجة إلى تأمين التطبيق الخاص بك من هجمات إعادة التشغيل ، فيجب عليك إضافة بعض المنطق الذي يتحقق من صحة الجلسات ولا يعتمد على أي من هذه الأساليب المدمجة. يبدو أن هؤلاء المقصودون في إدارة استمرار بيانات الجلسة ، وليس لتأمين طلبك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top