مدیر وب سایت دورآموز ،مدیر پروژه تیم برنامه نویسی جی وب ، برنامه نویس و مدرس زبان های برنامه نویسی و گرافیک
اگر شما با Asp.net Core طراحی وب سایت را انجام میدهید، متوجه خواهید شد که جلسات به همان شیوه ای که مورد استفاده قرار می گیرند کار نمی کنند. در اینجا چگونگی راه اندازی session (جلسات) را ارائه می دهیم
با استفاده از NuGet بسته Microsoft.AspNetCore.Session را به پروژه خود اضافه کنید.
حالا که ما بسته nuget را نصب کردیم، می توانیم جلسات را به ASP.NET اضافه کنیم.
درون فایل startup.cs کدهای زیر را اضافه کنید
services.AddDistributedMemoryCache(); // Adds a default in-memory implementation of
services.AddSession()
اکنون می توانید شی جلسه را با استفاده از 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 برای بازیابی آن مشاهده کنید.
فرض کنید یک کلاس فرضی داریم و میخواهیم از جلسه ذخیره شده در یک متد در متد دیگر استفاده کنیم، کد آن به صورت زیر خواهد بود .
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");
موفق باشید
چنانچه قصد برگزاری دوره ، مشاوره و یا سفارش پروژه را دارید ، درخواست خود را ارسال نمایید
ارسال درخواست دوره
ممنووون مطالب عااالی مفید و کاربردی بودند .خصوصا توضیح کامل شما در مورد چگونگی ذخیره یک مدل و استفاده از اون به صورت یک کلاس در پروژه هامون.
پاسخخواهش می کنم