تنظیمات ماژول Session State در IIS

Session State

در این مقاله به بررسی انواع Session State و نحوه انجام تنظیمات این ماژول در IIS 7.5، به دو روش زیر می پردازیم:

سطوح پیکربندی ماژول Session State در IIS

  • Web Server
  • Site
  • Application
  • Physical and Virtual Directories
  • File (URL)

ماژول ها و رسیدگی کننده ها (Handlers):

ماژول ها و رسیدگی کننده های لازم می بایستی در هر کدام از سطوح فوق بر روی وب سرور نصب و فعال شوند.

نکته: ماژول ها تنها می توانند در سطوح Web Server، Site و Application فعال شوند، ولی رسیدگی کننده ها می توانند در هر یک از سطوح مذکور فعال شوند.

سطح دسترسی مورد نیاز پیکربندی ماژول Session State در IIS

اگر شما از IIS Manager برای پیکربندی Session استفاده می کنید، بایستی دسترسی Administrator داشته باشید یا یک کاربر IIS Manager با حق دسترسی به یک سایت یا یک برنامه کاربردی در IIS Manager باشید.

نکته: اگر شما تنها یک کاربر عادی در IIS Manager باشید، ممکن است در صورت قفل شدن عناصر پیکربندی مرتبط با ماژول Session State قادر به انجام پیکربندی آن نباشید. اگر شما پیکربندی Session State را از طریق Appcmd.exe ، اجرای اسکریپتهای WMI و یا ویرایش فایل های پیکربندی انجام می دهید، بایستی حق اعمال Write در فایل یا فایلهای پیکربندی مورد نظر را داشته باشید.

فعالسازی وضعیت In-Process در ماژول Session State:

وضعیت In-Process در ماژول Session State، داده های Session State را برای برنامه ی کاربردی ASP.NET در پروسس عملگر (که برنامه کاربردی اجرا می کند) ذخیره می نماید. بصورت پیش فرض وضعیت Session State در IIS 7.5، در وضعیت In-Process است. وضعیت In-Process برای دسترسی سریع به داده های Session-State می باشد. به هر روی، هرچه شما داده های بیشتری را در Session ذخیره کنید، طبیعتا حافظه بیشتری از وب سرور را استفاده خواهید نمود که منجر به کند شدن عملکرد سرور می شود

. قبل از اینکه شما وضعیت In-Process را در ماژول Session State پیکربندی کنید، بایستی تاثیر بازیافت پروسس عملگر بر داده های تنظیمات ماژول Session State را در نظر بگیرید. اگر پروسس عملگر بازیافت شود، تمامی داده های Session State از بین خواهد رفت. اگر برنامه های کاربردی ASP.NET شما نیاز به حفظ داده های Session State داشته باشد و اگر سرعت دسترسی به داده ها برای شما از اهمیت زیادی برخوردار نیست، می توانید از وضعیت Out-of-Process در ماژول Session State جهت ذخیره سازی داده ها استفاده کنید.

نکته: سرویس وضعیت ویندوز (Windows State Service) یا همان Aspnet_state.exe برای وضعیت In-Process در ماژول Session State بایستی در حال اجرا باشد. بطور پیش فرض، سرویس مذکور با نصب Windows Server 2008 برای شروع دستی (Manual Start) نصب و پیکربندی می شود. توصیه می شود در Windows State Session وضعیت شروع(Start)  را از حالت دستی(Manual) به حالت خودکار (Automatic) تغییر دهید.

چگونگی فعالسازی وضعیت In-Process در ماژول Session State برای یک وب سرور:

شما می توانید از طریق رابط کاربری (UI)، اجرای دستورات Appcmd.exe در محیط Command-Line ویندوز ،  ویرایش مستقیم فایل های پیکربندی یا با نوشتن اسکریپتهای WMI، وضعیت In-Process را در ماژول Session State فعال کنید که در زیر به بیان دو مورد اول  آنها می پردازیم. برای اطلاع از چگونگی ویرایش فایل web.config و یا نوشتن اسکریپتهای WMI جهت انجام تنظیمات session state در کل این مقاله به سایت مایکروسافت رجوع نمایید.

  • فعالسازی وضعیت In-Process در ماژول session state از طریق رابط کربری (UI):
  1. IIS Manager را باز کنید و روی سطحی که قصد مدیریت آنرا دارید کلیک کنید.
  2. در قسمت Features View ، روی Session State دوبار کلیک کنید.
  3. در صفحه ی Session State، در قسمت Session State Mode Setting روی In-Process کلیک کنید.
  4. (انتخابی) تنظیمات Cookie را می توانید در قسمت Cookie Settings در صفحه ی Session State انجام دهید.
  5. (انتخابی) گزینه ی Identity for Impersonation Use Hosting را در شکل ۴ جهت استفاده از احراز هویت ویندوز و هویت پروسس میزبان انتخاب نمایید.
  6. در پنجره ی Actions روی Apply کلیک کنید.
  •  فعالسازی وضعیت In-Process در ماژول session state در محیط Command-Line ویندوز:

جهت فعالسازی وضعیت In-Process در ماژول Session State، متن زیر را در محیط Command-Line ویندوز وارد کرده و Enter را فشار دهید:

[pre]

appcmd set config/commit-WEBROOT /section:SessionState /mode:InProc

[/pre]

متغیر mode:InProc در حقیقت وضعیت  in-Process را در ماژول Session State فعال می کند. البته وضعیت in-process در ماژول Session State بطور پیش فرض فعال است.

پیکر بندی Session Time-Out:

هنگامیکه session state برای برنامه کاربردی شما فعال باشد، کاربر به ازای اولین درخواستی که برای صفحه وب  ارسال می نماید یک session ID منحصر بفرد توسط برنامه کاربردی ASP شما دریافت می کند. بطور پیش فرض ، session هنگامی منقضی می شود که کاربر درخواست یا refresh  برای یک صفحه در برنامه کاربردی ASP طی ۲۰ دقیقه ارسال نکند. از آنجا که به Session Objects در وب سرور حافظه اختصاص داده می شود، شما ممکن است جهت کاهش مقدار time-out برای صرفه جویی در منابع،  مقدار time-out را کاهش دهید.

نکته: هنگامیکه مقدار session time-out را تنظیم می کنید دقت کنید، زیرا که اطلاعات ذخیره شده در یک session object کاربر بواسطه ی وقوع time-out از بین خواهد رفت.

پیکر بندی session time-out با استفاده از رابط کاربری:

  1. برنامه IIS Manager را باز کرده و سطحی را که قصد مدیریت آنرا دارید انتخاب کنید.
  2. در قسمت Features View روی ASP دوبار کلیک کنید.
  3. در صفحه ی ASP زیر قسمت Services ، روی علامت بعلاوه کنار session Properties کلیک کنید.
  4. در فیلد Time-out، مقدار آنرا به فرمت hh:mm:ss وارد کنید. البته مقدار پیش فرض آن ۲۰ دقیقه است.
  5. در پنجره ی Actions، روی Apply کلیک کنید (مطابق شکل ۵ ).

استفاده از دستور Appcmd.exe در محیط Command-Line جهت پیکر بندی session time-out:

برای مشخص کردن بازه زمانی پیش فرضی که یک Session Object بعد از آخرین درخواست همچنان حفظ می شود، از دستور زیر در محیط Command-Line   استفاده کنید.

[pre]

Appcmd set config /section:asp /timeout: timeSpan

[/pre]

متغیر timeSpan در دستور فوق، معرف حداکثر بازه زمانی است که یک session object بعد از آخرین درخواست همچنان حفظ می شود. مقدار پیش فرض متغیر فوق ۰۰:۲۰:۰۰  می باشد.

غیر فعال سازی session state در IIS 7.5:

IIS بطور پیش فرض session state را برای ASP فعال می نماید. با فعّال سازی session state، وب سرور یک session object یا یک session ID منحصر بفرد ایجاد کرده و آنرا به هر کاربری که درخواست web page را از یک برنامه کاربردی ASP ارسال می نماید،  اختصاص می دهد. وب سرور سپس از آن session ID برای حفظ اطلاعات مربوط به کاربر تا زمانیکه session منقضی شود یا توسط یک اسکریپت ASP رها شود استفاده می کند.

Session ها می توانند منابع ارزشمند یک وب سرور را استفاده می کنند. شما با غیر فعالسازی session state قادر خواهید بود عملکرد برنامه کاربردی ASP خود را بهبود بخشید. هنگامیکه شما session state را غیر فعال می نمایید، ASP کاربران را ردیابی نخواهد کرد و همجنین به اسکریپت ASP اجازه ذخیره سازی اطلاعات در   session objectیا استفاده از رویدادهای Session_OnStart  یا Session_OnEnd برای بیش از یک درخواست یا رویداد (Event) را نخواهد داد.

روش های غیر فعالسازی تنظیمات ماژول Session State:

برای غیر فعالسازی تنظیمات ماژول Session State شما می توانید از روش های زیر استفاده کنید:

  • غیر فعالسازی با استفاده از رابط کاربری
  • غیر فعالسازی با اجرای دستورات Appcmd.exe در محیط command-Line ویندوز.
  • غیر فعالسازی با استفاده از ویرایش مستقیم فایل های پیکر بندی .
  • غیر فعالسازی با نوشتن اسکریپت های WMI

در ادامه به بررسی دو روش اول خواهیم پرداخت.

۱- غیر فعالسازی با استفاده از رابط کاربری :

  1. برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
  1. در قسمت Features View روی ASP دوبار کلیک نمایید.
  1. در صفحه ی ASP، زیر قسمت Services، روی علامت بعلاوه جلوی Session Properties کلیک نمایید.
  1. ارزش False را جلوی فیلد Enable Session State قرار دهید.
  1. در پنجره Actions روی Apply کلیک نمایید.

۲- غیر فعالسازی session state از طریق دستور Appcmd.exe در محیط Command-Line ویندوز:

برای غیر فعالسازی session state  برای برنامه کاربردی ASP، از دستور زیر در محیط Command-Line استفاده کنید.

[pre]

Appcmd set config /section:asp /allowSessionState:False

[/pre]

متغیر allowSessionState: False در دستور فوق، session state را غیر فعال می نماید. ارزش پیش فرض متغیر مذکور True می باشد.

مشخص کردن یک تامین کننده ی session state سفارشی (Custom Session state Provider):

شما می توانید از یک تامین کننده جهت رسیدگی به session state مربوط به برنامه کاربردی ASP.NET بر روی وب سرورتان استفاده کنید. تامین کننده ، در واقع ارتباط لازم به پایگاه داده ای که اطلاعات session state در آن ذخیره می شود را ایجاد می کند.در زیر به بیان دو علت اساسی استفاده از تامین کننده session state سفارشی می پردازیم:

  • برای ذخیره سازی اطلاعات تنظیمات ماژول Session State در یک منبع داده از قبیل یک پایگاه داده FoxPro  یا یک پایگاه داده Oracle در مقایسه با SQL Server.
  • شما باید اطلاعات session state را که از یک طرح پایگاه داده استفاده می کنند مدیریت نمایید. طرح پایگاه داده مذکور با طرح پایگاه داده ای که توسط تامین کننده ها ) که در بر گیرنده ی .NET Framework هستند) مورد استفاده قرار می گیرند، تفاوت دارد. بعنوان مثال می توان داده های سبد خرید که با یک طرح از پیش تعریف شده در یک پایگاه داده SQL Server موجود ذخیره می شوند را برای یک سایت یا شرکت تعریف کرد.

مشخص کردن یک تامین کننده ی session state سفارشی:

برای مشخص کردن یک تامین کننده ی session state سفارشی ، می توانید از روش های زیر استفاده نمایید:

  • استفاده از رابط کاربری
  • اجرای دستورات Appcmd.exe در محیط Command-Line ویندوز.
  • ویرایش مستقیم فایل های پیکربندی .
  • نوشتن اسکریپت های WMI.

در ادامه به توضیح روش اول  می پردازیم.

استفاده از رابط کاربری برای مشخص کردن یک تامین کننده ی session state سفارشی:

  1. برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
  1. در قسمت Feature View، روی Session State دوبار کلیک نمایید.
  1. در صفحه ی Session State، در قسمت Session State Model Settings، روی Custom کلیک نمایید.
  1. در پنجره Actions روی Apply کلیک نمایید.

پیکر بندی وضعیت Cookie برای ماژول تنظیمات ماژول Session State :

cookie

یکی از راه های ردیابی session state برای کلاینت ها یی که با وب سرور ارتباط دارند، استفاده از Cookie ها است. شما می توانید وب سرور را جهت استفاده از Cookie ها، عدم استفاده از Cookie ها یا انتخاب رفتار Cookie که به مرورگر مورد استفاده برای برقراری ارتباط با وب سرور بستگی دارد،  پیکر بندی کنید.

در ادامه به بررسی موارد زیر می پردازیم:

  • پیکربندی  Session state با استفاده از Cookie Mode
  • پیکربندی Session state با استفاده از Device Profile Cookie Mode
  • پیکربندی  Session state با استفاده از  Auto-Detect Cookie Mode
  • پیکربندی Session state با استفاده از  URI Cookie Mode

یک session cookie اطلاعات session را با اطلاعات کلاینت برای یک session ( که همان مدت ارتباط کاربر با یک سایت است) مربوط می سازد. در واقع Cookie به انضمام تمام درخواست های بین یک کلاینت و یک وب سرور (در یک هدر HTTP) تبادل می شود. استفاده از Cookie ها نسبت به سایر روشهایی که از Cookie ها استفاده نمی کنند، سودمندتر است زیرا که Cookie ها به Redirection نیاز ندارند. بعلاوه ، آنها کاربر را مجاز به استفاده از Bookmark برای صفحات وب می نمایند. به هر روی، Cookie ها نقص هایی هم دارند که در ادامه بیان می شود:

  • بعضی از مرورگران وب از Cookie ها پشتیبانی نمی کنند.
  • کاربران می توانند Cookie ها را غیر فعال نمایند.

پیکربندی Session State با استفاده از Cookie Mode

در IIS 7.5، چهار نوع حالت پشتیبانی از Cookie برای ردیابی session state وجود دارد. هر یک از این حالت‌ها برای سناریوهای متفاوتی مناسب هستند:

  1. UseCookies
    در این حالت، صرفاً از Cookie برای ذخیره‌سازی و ردگیری Session ID استفاده می‌شود. این روش پیش‌فرض و متداول‌ترین حالت استفاده است. مرورگر کاربر باید از کوکی پشتیبانی کند و آن را فعال نگه دارد.

  2. UseUri
    اگر مرورگر کاربر از کوکی پشتیبانی نمی‌کند یا کوکی‌ها را مسدود کرده است، از این گزینه استفاده می‌شود. در این حالت، شناسه Session به صورت پارامتر در URL ارسال می‌شود. این روش از لحاظ امنیتی ضعیف‌تر از UseCookies است زیرا Session ID ممکن است در تاریخچه مرورگر یا لاگ‌های سرور ذخیره شود.

  3. AutoDetect
    ابتدا تلاش می‌شود از کوکی استفاده شود. اگر مرورگر کوکی‌ها را پشتیبانی نکند، سیستم به‌صورت خودکار به استفاده از URI برای نگهداری Session ID تغییر وضعیت می‌دهد. این حالت برای سازگاری بیشتر با انواع مرورگرها مناسب است.

  4. UseDeviceProfile
    این گزینه بر اساس مشخصات دستگاه یا مرورگر، رفتار مناسب را برای استفاده از کوکی یا URI انتخاب می‌کند. استفاده از این حالت زمانی پیشنهاد می‌شود که تنوع وسیعی از کلاینت‌ها با ویژگی‌های متفاوت دارید.

پیکربندی Cookie Mode با استفاده از رابط کاربری:

  1. IIS Manager را باز کنید و سطح موردنظر (مانند Site یا Application) را انتخاب نمایید.

  2. در پنجره Feature View روی Session State دوبار کلیک کنید.

  3. در بخش Cookie Settings، از منوی کشویی Cookie Mode یکی از گزینه‌های UseCookies، UseUri، AutoDetect یا UseDeviceProfile را انتخاب نمایید.

  4. روی دکمه Apply در پنجره Actions کلیک کنید.

نکات امنیتی در استفاده از Session State

هرچند Session State راهکار مناسبی برای ذخیره داده‌های کاربر به صورت موقت و در طول یک جلسه تعامل با وب‌سایت است، رعایت موارد زیر برای افزایش امنیت و کارایی ضروری است:

  • استفاده از HTTPS: همواره از پروتکل امن HTTPS برای رمزگذاری داده‌ها و کوکی‌های Session استفاده کنید تا از شنود و سرقت Session جلوگیری شود.

  • تنظیم Secure و HttpOnly برای کوکی‌ها: ویژگی Secure تضمین می‌کند که کوکی فقط از طریق کانال امن ارسال شود و HttpOnly دسترسی از طریق JavaScript را محدود می‌کند.

  • محدود کردن مدت زمان Session: زمان Session باید به میزانی باشد که نیاز کاربر را پوشش دهد ولی در عین حال، منابع سیستم را بیهوده اشغال نکند.

  • عدم ذخیره اطلاعات حساس در Session: از ذخیره داده‌های حساس مانند اطلاعات بانکی یا رمزهای عبور در Session بپرهیزید.

نتیجه‌ گیری

مدیریت صحیح Session State در IIS 7.5 نقش حیاتی در پایداری، امنیت و کارایی برنامه‌های ASP و ASP.NET ایفا می‌کند. با شناخت دقیق انواع مدل‌های نگهداری Session (مانند In-Process، Out-of-Process و Custom Provider)، تنظیم زمان Timeout و شیوه‌های استفاده از کوکی، می‌توان راه‌حل‌های بهینه‌ای را برای هر سناریوی توسعه و میزبانی وب انتخاب کرد. همچنین استفاده از ابزارهایی چون IIS Manager و Appcmd.exe، انعطاف بالایی را برای مدیریت پیکربندی‌ها در اختیار مدیران سیستم قرار می‌دهد.

آخرین نوشته ها

تماس با ما

 کرج، شاهین ویلا، بلوار باهنر ، نرسیده به میدان باهنر ، ساختمان آکو مد ،طبقه دوم واحد4

 91014618

  info@shopingserver.net

با تلفن ثابت بدون پیش شماره قابل شماره گیری هست و در صورتی که با تلفن همراه قصد تماس گرفتن دارید از پیش شماره استان خود را اول شماره وارد نمایید.