چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

متد ()Session.Abandon در ASP.Net

متد ()HttpSessionState.Abandon به شما اجازه خواهد داد که جلسه فعلی را لغو کنید. ما در برنامه‌های ASP.Net به صورت ()Session.Abandon این متد را فراخوانی خواهیم کرد و البته این متد پارامتری دریافت نمی‌کند و مقداری هم برگشت نخواهد داد و در فضایی نام System.Web.SessionState و اسمبلی System.Web.dll موجود است که بعد از ارایه دات نت فریم ورک 1.1 در دسترس قرار گرفت.
با فراخوانی متد ()Abandon تمامی شی‌های ذخیره شده در شی Session پاک شده و منابع موجود آزاد خواهد شد و همین روال در زمان پایان Session نیز اتفاق خواهد افتاد.

نکته‌ای که باید به آن اشاره شود این است که با فراخوانی متد Abandon شی session تعریفی موجود تا پایان پروسه جاری حذف نخواهد شد. در واقع به این معنی است که شما قادر خواهید بود مقدار شی موجود در session در صفحه‌ای که متد Abandon را فراخوانی کرده‌اید قبل از به پایان رسیدن پروسه به آن مقادیر دسترسی یافته، همچنین با به پایان رسیدن پروسه شی موجود در session از بین خواهد رفت و با اجرای پروسه جدید دیگر session قابل دسترس نخواهد بود.

مثال:

کد زیرا در نظر بگیرید، با توجه به تعریف بالا در فایل View اکشن متد Index قادر خواهیم بود که مقدار سی شن را به کاربر  نمایش دهیم اما بعد از Redirect به صفحه About با مقدار null در شی mode روبرو خواهیم شد، دلیل نمایش در صفحه Index به اتمام نرسیدن پروسه است.

using System.Web.Mvc;

namespace Session.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            // Your code ...
            HttpContext.Session.Abandon();
            HttpContext.Session["SessionTest"] = "ValueTest";
            return View();
        }

        public ActionResult About()
        {
            var mode = @HttpContext.Session["SessionTest"];
            return View(mode);
        }
    }
}

مثال:

فرض کنید در یک پروژه نیاز است متد TEST فراخوانی شود که در آن متد Abandon نیز فراخوانی خواهد شد همانند متد Index در مثال اول و لازم است یک مقدار نیز در session ذخیره شود و در صفحات دیگر بتوان به آن دسترسی داشت راه چاره چیست؟

یکی از این راه حل‌ها ذخیره شی در session اما بعد از اتمام پروسه جاری است! در این روش شما یک متد کمکی دیگر تعریف کرده و شی که لازم است در session ذخیره شود را به آن متد پاس خواهیم داد و داخل این متد session جدید را مقدار دهی خواهیم کرد.

using System.Web.Mvc;

namespace Session.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            // Your code ...
            HttpContext.Session.Abandon();
            HttpContext.Session["SessionTest"] = "ValueTest";
            return RedirectToAction("ActionHelper", new {helper = "TEST Value.", returnUrl = "/Home/About"});
        }

        public ActionResult ActionHelper(string helper, string returnUrl)
        {
            HttpContext.Session["SessionTest"] = helper;
            return Redirect(returnUrl);
        }


        public ActionResult About()
        {
            var mode = HttpContext.Session["SessionTest"];
            return View(mode);
        }
    }
}

اکنون در شی mode مقدار موجود در session قابل دسترس است.

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.