رامین اسلامی

استفاده از Session در Asp.net Core

اگر شما با Asp.net Core طراحی وب سایت را انجام میدهید، متوجه خواهید شد که جلسات به همان شیوه ای که مورد استفاده قرار می گیرند کار نمی کنند. در اینجا چگونگی راه اندازی session (جلسات) را ارائه می دهیم

استفاده از Session در Asp.net Core - مدرسه آنلاین دورآموز

استفاده از Session در Asp.net Core

اگر شما با Asp.net Core طراحی وب سایت را انجام میدهید، متوجه خواهید شد که جلسات به همان شیوه ای که مورد استفاده قرار می گیرند کار نمی کنند. در اینجا چگونگی راه اندازی session (جلسات) را ارائه می دهیم

 

اضافه کردن جلسه با بسته NuGet

با استفاده از  NuGet  بسته Microsoft.AspNetCore.Session را به پروژه خود اضافه کنید.

Update startup.cs

حالا که ما بسته nuget را نصب کردیم، می توانیم جلسات را به ASP.NET اضافه کنیم.

درون فایل startup.cs کدهای زیر را اضافه کنید


services.AddDistributedMemoryCache(); // Adds a default in-memory implementation of 

services.AddSession()

 

درادامه ، ASP.NET Core را برای استفاده از حافظه پنهان برای ذخیره داده های جلسه پیکربندی می کنیم

 

 

متغیر جلسه کجا رفته است؟

 اکنون می توانید شی جلسه را با استفاده از HttpContext.Session پیدا کنید.

اگر شما در یک کنترلر نیستید، با تزریق IHttpContextAccessor، هنوز می توانید به HttpContext دسترسی داشته باشید.

بیایید پیش برویم و جلساتمان را به کنترل کننده اصلی مان اضافه کنیم:

using Microsoft.AspNetCore.Http; // in code jajhate estefade as method haye session elzamist
 
public class HomeController : Controller
{
    public IActionResult Index()
    { 
        HttpContext.Session.SetString("Test", "Ramin Eslami!");
        return View();
    }
 
    public IActionResult About()
    {
        ViewBag.Message = HttpContext.Session.GetString("Test");
 
        return View();
    }
}


شما می توانید در  اکشن های Index و About یکی از روش های Set  برای ذخیره اطلاعات و یکی از روش های Get  برای بازیابی آن مشاهده کنید.

استفاده از Session درون یک Class

فرض کنید یک کلاس فرضی داریم و میخواهیم از جلسه ذخیره شده در یک متد در متد دیگر استفاده کنیم، کد آن به صورت زیر خواهد بود .

public class SomeOtherClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    private ISession _session => _httpContextAccessor.HttpContext.Session;
 
    public SomeOtherClass(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }
 
    public void TestSet()
    {
        _session.SetString("Test", "Ramin Eslami!");
    }
 
    public void TestGet()
    {
        var message = _session.GetString("Test");
    }
}

 

چگونه یک مدل را ذخیره کنیم؟

در اینجا از یک  افزونه ذخیره سازی سریع JSON  که امکان ذخیره سازی اجرای پیچیده را می دهد ، استفاده میکیم.

میتوانید کد زیر را کپی گرفته و به صورت یک کلاس در پروژه خود استفاده کنید

public static class SessionExtensions
{
    public static void SetObjectAsJson(this ISession session, string key, object value)
    {
        session.SetString(key, JsonConvert.SerializeObject(value));
    }
 
    public static T GetObjectFromJson<T>(this ISession session, string key)
    {
        var value = session.GetString(key);
 
        return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
    }
}

اکنون جهت ذخیره یک مدل درون آن از کد زیر استفاده کنید

var myComplexObject = new MyClass();
HttpContext.Session.SetObjectAsJson("Test", myComplexObject)

و جهت فراخوانی آن از کد زیر استفاده کنید.

var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");

موفق باشید

 


رامین اسلامی-مدرسه آنلاین دورآموز

رامین اسلامی

مدیر وب سایت دورآموز ، تیم برنامه نویسی جی وب و امور مشترکین مخابرات . برنامه نویس و مدرس زبان های برنامه نویسی و گرافیک سازمان فنی و حرفه ای

به نام خدا

رامین اسلامی هستم ، مدیر وب سایت دورآموز ،مدیر پروژه تیم جی وب ، برنامه نویس هریس کامپیوتر شعبه کانادا و برنامه نویس و مدرس زبان های برنامه نویسی .

من  یک توسعه‌دهنده نرم‌افزار و از علاقمندان فن‌آوری‌های مایکروسافت هستم و دوست دارم روی آنها کار کنم. حوزه اصلی تمرکز من روی C#.Net، Asp.Net، Sqlserver، Entity Framework، MVC، Web API، Jquery و Maui می باشد

  •  ProductRaes@Gmail.com
  •  09155143391

 

بیش از 7 سال سابقه در مدیریت پروژه سیستم طرح جامع امور مشترکین مخابرات استان خراسان رضوی ، 4 سال مدیریت تیم برنامه نویسی شبکه سبز ، 7 سال مدیر وبسایت دورآموز و 20 سال سابقه آموزش در آموزشگاه های مشهد و تهران  را دارا می باشم.

یکی از زیباترین لحظات زندگیم ، آموزش هرآنچه فراگرفته ام و مشاهده پیشرفت شاگردانم می باشد.و باعث سرافراری و خرسندی من می باشد که تعداد زیادی از شاگردان قدیمیم همکاران و رقیبان کاری حال حاضر من می باشند.

سابقه برنامه نویسی من

بیش از 7 سال سابقه در مدیریت پروژه سیستم طرح جامع امور مشترکین مخابرات استان خراسان رضوی شامل بخش های :امورمشترکین , ام دی اف , سالن دستگاه , رئیس مرکز , واگذاری خطوط , آبونمان - مدیر پروژه تیم برنامه نویسی جی وب -  سیستم pap مخابرات -  سیستم اداره ترابری مخابرات -  سیستم حسابداری پویا - ویندوز جادویی پویا - سیستم  سهام شرکت تعاونی آتیه شرق - مدیریت فروش سوپرگوشت  - سایت فروش آسان تست - ۱۰ مجموعه تست و آموزش تصویری آسان تست - خودآزمون  حسابداری  - خودآزمون دیپلم کامپیوتر  -  وبسایت آموزشگاه کامپیوتر پژوهش  - وبسایت آزمون های بین المللی ICDL پاسارگاد  - وب سایت فرش ستاره کویر یزد  -  سیستم حسابداری گل فروشی ایمانا  -  سایت رسمی شرکت پیمانکاری peykavan مالزی  -  انجمن داروخانه های خراسان  - سیستم کنترل تولید شرکت پارس اورتوپد  - فروشگاه اینترنتی قاصتک  - سامانه  فروش بلیط هواپیما مسترتیکو  - پنل مدیریت (CMS) asp.net core  -  باربری حجت بار  و …

سابقه تدریس من

بیش از ۲۰ سال تدرس زبان های برنامه نویسی و گرافیکی و بانک های اطلاعاتی  ,  آموزش کارکنان شرکت گاز مشهد ,  آموزش کارکنان شرکت گاز سرخس ,  آموزش کارکنان اداره مخابرات , آموزش در اموزشگاه های معتبر خراسان رضوی نظیر پاسارگاد ، آراد ، پژوهش ، سنا ، کاسپین و … آموزشگاه رهرو - تهران

فعالیت های من

برگزاری دوره های تخصصی برنامه نویسی در دفتر تیم برنامه نویسی جی وب در شهر مشهد , مشاوره در طراحی بانک های اطلاعاتی , مشاوره و مدیریت پروژه های برنامه نویسی , برنامه نویسی برنامه های کاربردی , برنامه نویسی وب سایت , برنامه نویسی موبایل

 

  • productraes@gmail.com
  • 09155143391
پرسش و پاسخ
  • زهرا مفتاحی

    ممنووون مطالب عااالی مفید و کاربردی بودند .خصوصا توضیح کامل شما در مورد چگونگی ذخیره یک مدل و استفاده از اون به صورت یک کلاس در پروژه هامون.

    پنج شنبه، ۰۷ آذر ۱۳۹۸ ساعت ۱۱:۵۷:۴۰
نوشته های دیگر این نویسنده

عضوی از دورآموز شو

درخواست مشاوره رایگان می باشد . فقط کافیست شماره همراه خود را ثبت نمایید تا با شما تماس بگیریم

و یا می توانید هم اکنون با شماره 09155143391تماس حاصل نمایید

دورآموزی
شو