تعریف و استفاده از session در asp.net core
با سلام به دانشجویان گرامی. قصد دارم در این مقاله از وب سایت Aspcore.Ir در مورد موضوع Session یا متغیرهای نگهداری حالت در Asp.net core صحبت کنم. هدف از این مقاله نحوه تعریف و استفاده از session در Asp.net core می باشد.
برای تعریف سشن (session) در asp.net core در ابتدا باید از بخش nuget package consol کتابخونه Microsoft.AspNetCore.Session رو به پروژه اضافه کنیم که برای این کار کافیه به سایت nuget.org مراجعه کنید و همین عبارت Microsoft.AspNetCore.Session رو سرچ کنید تا دستورش رو بهتون بده. بعد از کپی کردن لینک دانلود و نصب پکیج کافیه از منوی Tools گزینه Nuget Package Manager و بعد از اون گزینه Package Manager Consol رو انتخاب کنید و دستور نصب پکیج رو وارد کنید و پکیج رو نصب کنید.
در مرحله بعد برای تعریف و استفاده از session در asp.net core باید سراغ فایل startup.cs برید و Service مورد نظر رو در متد ConfigureService اضافه کنید. به تصویر زیر دقت کنید.
همچنین استفاده از سشن ها در Asp.net core نیاز به یک میان افزار یا middleware هم داره. پس باید در متد Configure میان افزار مربوط به سشن رو هم اضافه کنید.
حالا بعد از نصب رفرنس مورد نیاز مو اضافه کردن Service و Middleware مورد نیاز میتونید در هر جا از پروژه Session تعریف کنید و از اون استفاده کنید.
فقط کافیه از فضا نام Microsoft.AspNetCore.Http در بالای کلاس یا کنترلرهای خودتون استفاده کنید و در نهایت هم با دستور زیر یک سشن رو تعریف کنید:
HttpContext.Session.SetString(“UserID”, “123”));
دقت کنید این دستور دارای ۲ تا پارامتر هست. پارامتر اول نام سشن هست (UserID) و پارامتر دوم هم مقدار سشن هست. البته شما می توانید مقدار session رو یک پارامتر داینامیک هم ارسال کنید.
اما موضوع مهم بعدی دریافت مقدار از سشن هست که برای این مورد هم میشه براحتی با استفاده از دستور زیر استفاده می کنیم
HttpContext.Session.GetString(“UserName”);
آقای بحرانی فرد نظرتون در مورد سشن ها چیه؟استفاده بشه بهتره یا نه؟چون ندیدم شما تو آموزش هاتون استفاده کنید ممنون میشم راهنمایی بفرمایید؟
با سلام. در آموزش ها هم خیلی ما از سشن ها استفاده کردیم. ولی ترجیح خودم اینه به جای سشن اطلاعات رو تا حد امکان توی دیتابیس نگهداری و استفاده کنم.
سلام
من دقیقا مطابق با روش شما استفاده کردم
روی لوکال جواب میده ولی روی هاست جواب نمبده
اشکال از چیه؟
اگر روی لوکال درسته ولی روی هاست خیر احتمالا هاست شما یک هاست اشتراکی شلوغ هست. در هاستهای اشتراکی هر ۵ یا ۱۰ دقیقه یکبار کل سشن های موجود روی سرور حذف میشن تا روی سرور فشاری نباشه.