0

تغییر رفتار Session از طریق کدنویسی در ASP.NET4.0

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

تغییر رفتار Session از طریق کدنویسی در ASP.NET4.0

یکی از موارد مهم State Management (مدیریت حالت) در برنامه های وب دات نت (ASP.NET ) عنصر Session می باشد.

برای فعال و یا غیر فعال نمودن Session گزینه های مختلفی وجود دارد از جمله :

     فعال و یا غیر فعال نمودن Session در فایل Web.config
     فعال و یا غیر فعال نمودن Session توسط خصوصیت EnableSessionState مربوط به رهنمود @Page

در مورد اول این خصیصه برای تمام صفحات اعمال خواهد شد اما در مورد دوم این خصیصه تنها برای صفحه ای که در رهنمود @Page آن خصوصیت EnableSessionState برابر false قرار گرفته اعمال خواهد شد.

تا قبل از ASP.NET4.0 امکان تغییر رفتار Session از طریق کدنویسی و به طور داینامیک نبود اما با ظهور ASP.NET4.0 هم اکنون این امکان برای شما فراهم شده تا بتونید Session رو از طریق کدنویسی و داینامیک و طبق شرایط خاص خودتون فعال و یا غیر فعال کنید.

درASP.NET4.0  متد جدیدی تحت نام SetSessionStateBehavior در کلاس HttpContext معرفی شده که ورودی enum ای از جنس System.Web.SessionState.SessionStateBehavior رو دریافت می کند و متناسب با نوع enum پاس شده رفتار خواهد کرد.

مثال:

برای درک بهتر مطلب مثالی رو باهم بررسی خواهیم نمود

فرض کنید سه نوع کاربر در معماری سایت شما وجود دارند و شما می خواهید این خصیصه تنها برای کاربران طلایی سایت فعال شود و در غیر اینصورت و برای مابقی کاربران این خصیصه فعال نباشد و یا تنها خواندنی باشد و ...

برای پیاده سازی این موضوع بهترین راه نوشتن یک HttpModule سفارشی می باشد .

 
01.using System.Web;
02.  
03.namespace MS.HttpModule.SessionState
04.{
05.    public class ChangeSessionState : IHttpModule
06.    {
07.        public void Dispose() { }
08.        public void Init(HttpApplication context)
09.        {
10.            context.BeginRequest += (sender, e) =>
11.                {
12.                    HttpContext currentContext = (sender as HttpApplication).Context;
13.                    if (!string.IsNullOrEmpty(currentContext.Request.QueryString["memberType"]))
14.                        if (currentContext.Request.QueryString["memberType"].ToString().Equals("Gold"))
15.                            currentContext.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
16.                        else
17.                            currentContext.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly);
18.                    else
19.                        currentContext.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Disabled);
20.                };
21.        }
22.    }
23.}

 

چهارشنبه 8 آذر 1391  7:40 AM
تشکرات از این پست
دسترسی سریع به انجمن ها