تنظیمات ماژول Session State در IIS
در این مقاله به بررسی انواع Session State و نحوه انجام تنظیمات این ماژول در IIS 7.5، به دو روش زیر می پردازیم:
۱. استفاده از رابط کاربری (UI) برنامه ی IIS Manager
۲. استفاده از دستور Appcmd.exe در محیط Command-Line
سطوح پیکربندی ماژول 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):
- IIS Manager را باز کنید و روی سطحی که قصد مدیریت آنرا دارید کلیک کنید.
۲. در قسمت Features View ، روی Session State دوبار کلیک کنید.
۳. در صفحه ی Session State، در قسمت Session State Mode Setting روی In-Process کلیک کنید.
۴. (انتخابی) تنظیمات Cookie را می توانید در قسمت Cookie Settings در صفحه ی Session State انجام دهید.
۵. (انتخابی) گزینه ی Identity for Impersonation Use Hosting را در شکل ۴ جهت استفاده از احراز هویت ویندوز و هویت پروسس میزبان انتخاب نمایید.
۶. در پنجره ی 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با استفاده از رابط کاربری:
- برنامه IIS Manager را باز کرده و سطحی را که قصد مدیریت آنرا دارید انتخاب کنید.
- در قسمت Features View روی ASP دوبار کلیک کنید.
۳. در صفحه ی ASP زیر قسمت Services ، روی علامت بعلاوه کنار session Properties کلیک کنید.
۴. در فیلد Time-out، مقدار آنرا به فرمت hh:mm:ss وارد کنید. البته مقدار پیش فرض آن ۲۰ دقیقه است.
۵. در پنجره ی 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
در ادامه به بررسی دو روش اول خواهیم پرداخت.
۱- غیر فعالسازی با استفاده از رابط کاربری :
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Features View روی ASP دوبار کلیک نمایید.
- در صفحه ی ASP، زیر قسمت Services، روی علامت بعلاوه جلوی Session Properties کلیک نمایید.
- ارزش False را جلوی فیلد Enable Session State قرار دهید.
- در پنجره 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 سفارشی:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Feature View، روی Session State دوبار کلیک نمایید.
- در صفحه ی Session State، در قسمت Session State Model Settings، روی Custom کلیک نمایید.
- در پنجره Actions روی Apply کلیک نمایید.
پیکر بندی وضعیت Cookie برای ماژول Session State :
یکی از راه های ردیابی 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 با استفاده از Cookies Mode:
با استفاده از رابط کاربری:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Features View روی Session State دو بار کلیک نمایید.
- در صفحه ی Session State و در قسمت Cookie Settings ، گزینه ی Use Cookies را برای Mode مربوط به Cookie Settings انتخاب نمایید.
- نام Cookie را زیر Name تایپ کنید، یا از نام پیش فرض Cookie که همان ASP.NET_SessionId است استفاده نمایید.
- مقدار time-out را در زیر قسمت Timt-out تایپ نمایید، یا از time-out پیش فرض که همان ۲۰ دقیقه است استفاده نمایید.
- در پنجره Actions روی Apply کلیک نمایید.
با استفاده از دستورات Appcmd.exe در محیط Command-Line ویندوز:
برای پیکر بندی Session state با استفاده از Cookies Modeدستور زیر را در محیط Command-Line ویندوز وارد نمایید.
[pre]
Appcmd set config /commit:WEBROOT /section:sessionState
cookieless:UseCookies /cookieName:string /timeout:timeSpan/
[/pre]
متغیر cookieless:UseCookies در واقع IIS 7.5 را جهت استفاده از Cookies Modeبرای Session state پیکربندی می نماید. متغیر string نام Cookie می باشد ( که بطور پیش فرض ASP.NET_SessionId است). متغیر timeSpan در واقع time out مربوط به cookie را بر حسب دقیقه مشخص می کند (که مقدار پیش فرض آن ۲۰ دقیقه است). بعنوان مثال، برای ست نمودن یک cookie mode برای session state (که MyCookie نام دارد و بعد از ۴۰ دقیقه منقضی می شود)، دستور زیر را در محیط Command-Line ویندوز وارد نمایید.
[pre]
Appcmd set config /commit:WEBROOT /section:sessionState
cookieless:UseCookies /cookieName:MyCookie /timeout:40/
[/pre]
نکته: هنگامیکه از دستور Appcmd.exe جهت پیکربندی عنصر <sessionState> در سطح global در IIS 7.5 استفاده می نمایید، بایستی /commit:WEBROOT را در محیط Command-Line بمنظور اعمال تغییرات پیکر بندی در فایل Web.config بجای فایل ApplicationHost.config مشخص نمایید.
پیکربندی session state با استفاده از Device Profile Cookie Mode:
Device Profile Cookie Mode در واقع مشخص کننده ی پشتیبانی یا عدم پشتیبانی از cookie ها توسط مرورگرهای وب است. اگر Device Profile پشتیبانی از cookie ها را نشان دهد، آنها بدون در نظر گرفتن فعال یا غیر فعال کردن cookie ها توسط کاربر می توانند مورد استفاده قرار بگیرند. هنگامیکه از Device Profile Cookie Mode استفاده می کنید، نیازمند تولید مجدد Session ID های منقضی شده هستید. تولید مجدد session ID های منقضی شده در واقع وب سرور را مجاز به منقضی و تولید مجدد token ها می نماید که این امر زمان کمتری را به مهاجمان فعال جهت بدست آوردن cookie و کسب محتویات وب سرور می دهد.
پیکر بندی session state با استفاده از Device Profile Cookie Mode:
- با استفاده از رابط کاربری:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Feature View روی Session State دو بار کلیک نمایید.
- در صفحه ی Session State، به قسمت Cookie Settings رفته و گزینه ی Use Device Profile را در زیر Mode انتخاب نمایید.
- نام Cookie را زیر قسمت Name تایپ کنید یا از نام پیش فرض آن که همان ASP.NET_SessionId است، استفاده نمایید.
- مقدار time-out را در قسمت Time-out تایپ نمایید یا از مقدار پیش فرض آن که همان ۲۰ دقیقه است استفاده نمایید.
- گزینه ی Regenerate expired session ID را انتخاب کرده سپس از پنجره ی Actions روی Apply کلیک نمایید.
- استفاده از دستور Appcmd.exe برای device profile cookie جهت پیکربندی session state:
برای پیکربندی با استفاده از device profile cookie mode برای session state از دستور زیر در محیط Command-Line ویندوز استفاده نمایید.
[pre]
Appcmd set config /commit:WEBROOT /section:sessionState
coockeless:UseDeviceProfile /cookieName:string/
timeout:timespan /regenerateExpiredSessionId:True|False/
[/pre]
متغیر cookieless:UseDeviceProfile در واقع IIS 7.5 را جهت استفاده از device profile cookie mode برای session state پیکر بندی می نماید. متغیر string نام cookie می باشد که بطور پیش فرض ASP.NET_SessionId است. متغیر timespan مشخص کننده مدت زمانی است که بعد از آن cookie منقضی می شود. مقدار پیش فرض timespan 20 دقیقه است. متغیر regenerateExpiredSessionId:True|False بعنوان فعال یا غیر فعال کننده ی تولید مجدد session ID های منقضی بکار می رود.
پیکر بندی Auto-Detect Cookie Mode برای Session State:
در صورتیکه mobile device profile از cookie پشتیبانی کند، Auto-Detect Cookie Mode سبب استفاده از cookie می شود . در غیر اینصورت هیچ cookie را نمی توان مورد استفاده قرار داد. ASP.NET، هنگامیکه پشتیبانی cookie در مرورگر فعال باشد سعی بر استفاده از cookie ها می نماید. اگر پشتیبانی cookie غیر فعال باشد، session state در URL ذخیره می شود. هنگامیکه شما از Auto-Detect cookie mode استفاده می کنید، نیاز به تولید مجدد session ID های منقضی دارید. تولید مجدد session ID های منقضی شده در واقع وب سرور را مجاز به منقضی و تولید مجدد token ها می نماید که این امر زمان کمتری را به مهاجمان فعال جهت بدست آوردن cookie و کسب محتویات وب سرور می دهد. شما بایستی تغییر مقدار time-out به کمتر از ۲۰ دقیقه (که مقدار پیش فرض است) را نیز مد نظر داشته باشید.
- پیکربندی auto-detect cookie mode برای session state با استفاده از رابط کاربری:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Feature View روی Session State دو بار کلیک نمایید.
- در صفحه ی Session State، به قسمت Cookie Settings رفته و گزینه ی Auto Detect را در زیر Mode انتخاب نمایید.
- نام Cookie را زیر قسمت Name تایپ کنید یا از نام پیش فرض آن که همان ASP.NET_SessionId است، استفاده نمایید.
- مقدار time-out را در قسمت Time-out تایپ نمایید یا از مقدار پیش فرض آن که همان ۲۰ دقیقه است استفاده نمایید.
- گزینه ی Regenerate expired session ID را انتخاب کرده سپس از پنجره ی Actions روی Apply کلیک نمایید.
- پیکربندی auto-detect cookie mode برای session state در محیط Command-Line ویندوز:
جهت پیکربندی auto-detect cookie mode برای session state در محیط Command-Line ویندوز، دستور زیر را وارد نمایید.
[pre]
Appcmd set config /commit:WEBROOT
section:sessionState /cookieless:AutoDetect/
cookieName:string /timeout:timeSpan/
regenerateExpiredSessionId:True|False/
[/pre]
متغیر cookieless:AutoDetect در واقع IIS 7.5 را برای استفاده از auto-detect cookie mode برای session state پیکربندی می نماید.
پیکربندی با استفاده از URI Cookie Mode برای session state:
شما می توانید session state را بدون استفاده از cookie ها پیکربندی نمایید. هنگامیکه شما از Uniform Resource Identifier (URI) برای رسیدگی به session state استفاده می نمایید، session ID بعنوان یک query string در درخواست URI گنجانده می شود و سپس URI به URL درخواست شده اصلی تغییر مسیر می دهد (Redirect). درخواست URI تغییر داده شده برای طول زمان session مورد استفاده قرار می گیرد، بواسطه ی آن هیچ cookie لازم نیست. هنگام استفاده از یک URI، نیازمند تولید مجدد Session ID های منقضی شده هستید. تولید مجدد session ID های منقضی شده در واقع وب سرور را مجاز به منقضی و تولید مجدد token ها می نماید که این امر زمان کمتری را به مهاجمان فعال جهت بدست آوردن cookie و کسب محتویات وب سرور می دهد. با استفاده از یک URI جهت ردیابی session state شما با مشکلات cookie ها شامل مشکلات پشتیبانی مرورگر و امکان غیر فعال سازی cookie توسط کاربران برخورد نخواهید داشت. به هر روی، استفاده از URI جهت ردیابی Session state مشکلاتی نیز دارد که در ادامه به بیان آنها می پردازیم:
- اگر کاربر وارد برنامه کاربردی دیگری شود و سپس به برنامه ی نخست برگردد، ورودی های کاربر روی صفحه ی وب باقی نخواهند ماند.
- به کاربران امکان bookmark کردن صفحات وب را بدلیل از دست رفتن session state نمی دهد.
- پیکربندی با استفاده از رابط کاربری:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Feature View روی Session State دو بار کلیک نمایید.
- در صفحه ی Session State، به قسمت Cookie Settings رفته و گزینه ی Use URI را در زیر Mode انتخاب نمایید.
۴ . گزینه ی Regenerate expired session ID را انتخاب کرده سپس از پنجره ی Actions روی Apply کلیک نمایید.
- پیکربندی با استفاده از محیط Command-Line:
جهت پیکربندی mode URI cookieبرای session state در محیط Command-Line ویندوز، دستور زیر را وارد نمایید.
[pre]
Appcmd set config /commit:WEBROOT /section:sessionState
cookieless:UseUri /regenerateExpiredSessionId:True|False/
[/pre]
متغیر cookieless:UseUri در واقع IIS 7.5 را برای استفاده ازmode URI cookie جهت session state پیکربندی می نماید. متغیر regenerateExpiredSessionId:True|False تولید مجدد Session ID های منقضی شده را فعال یا غیر فعال می نماید.
پیکربندی وضعیت Out-of-Process در ماژول Session State:
وضعیت Out-of-Process در ماژول Session State داده های session state را خارج از پروسس های عملگر که در آن برنامه های کاربردی ASP.NET در حال اجرا هستند نگهداری می نماید. دو روش برای پیکربندی وضعیت out-of-process در ماژول session state وجود دارد:
- State server: که به windows state service و Aspnet_state.exe جهت ذخیره سازی داده های session state بستگی دارد.
- پایگاه داده ی SQL Server
وضعیت out-of-process در ماژول session state احتیاج به یک machine key جهت شناسایی session state در طول ارتباط با state server یا SQL server دارد.
پیکربندی یک state server برای حفظ session state در IIS 7.5:
مزیت اصلی این پیکربندی در واقع در نگهداری session state در هنگام بازیافت پروسس عملگر برنامه کاربردی است. استفاده از state server برای برنامه های کاربردی با اندازه متوسط توصیه می شود. هنگامیکه یک state server روی وب سرور یکسان که شامل برنامه های کاربردی برای نگهداری stateاست اجرا می شود، در واقع از یک web garden پشتیبانی می نماید. یکی از مشکلات این رویکرد شامل این موضوع می شود که اگر state server یا web server از دسترس خارج شوند، تمام اطلاعات session state از بین می رود. برای رفع مشکل فوق و افزایش حمایت از داده ها ی session state می توان یک پیکربندی web farm را با یک سرور جداگانه به منظور ذخیره سازی و به اشتراک گذاری داده های session state در میان سرور ها در farm در نظر گرفت. یکی دیگر از رویکردها، استفاده از SQL Server جهت نگهداری وضعیت out-of-process در ماژول session state می باشد.
پیکربندی یک State Server برای نگهداری session state:
- با استفاده از یک رابط کاربری:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Feature View روی Session State دو بار کلیک نمایید.
- در صفحه ی session state به قسمت Session State Mode Settings رفته و روی State Server کلیک نمایید.
- رشته ارتباط (Connection String) را در قسمت Connection String وارد کنید یا با کلیک بر روی Create یک رشته ارتباطی جدید ایجاد نمایید.
- مقدار time-out را برای Time-Out (برحسب ثانیه) تایپ نمایید. مقدار پیش فرض آن ۱۰ ثانیه است.
- (انتخابی) در قسمت Cookie Settings روی صفحه ی Session State نسبت به پیکربندی تنظیمات cookie اقدام نمایید.
- (انتخابی) گزینه ی Use hosting identity for impersonation را جهت احراز هویت ویندوز و هویت پروسس میزبان برای ارتباط با پایگاه داده انتخاب نمایید.
- در پنجره Actions روی Apply کلیک نمایید.
- پیکربندی با استفاده از محیط Command-Line در ویندوز:
برای پیکربندی یک state server جهت نگهداری session state، دستور زیر را در محیط Command-Line ویندوز وارد نمایید.
[pre] Appcmd set config /commit:WEBROOT /section:sessionState
mode:StateServer /stateConnectionString:string/
stateNetworkTimeout:timeSpan /useHostingIdentity:True|False/
[/pre]
متغیر mode:StateServer وضعیت session state را جهت ذخیره سازی داده های session در یک state server فعال می نماید. متغیر string رشته ارتباطی که state server استفاده می کند را بیان می کند که بطور پیش فرض مقدار آن tcpip=loopback:42424 است. متغیر timeSpan مدت زمانی که ارتباط با state server حفظ می شود را بر حسب ثانیه مشخص می نماید که مقدار پیش فرض آن ۱۰ ثانیه است. متغیر True|False:useHostingIdentity احراز هویت ویندوز و هویت پروسس میزبان را برای ارتباط با پایگاه داده فعال یا غیر فعال می نماید که مقدار پیش فرض آن True می باشد.
پیکربندی SQL Server برای نگهداری Session State در IIS 7.5:
یکی از انواع out-of-process session state استفاده از یک SQL Server جهت ذخیره سازی داده های session state می باشد. این نوع session ها در دیتابیس ذخیره می شوند و با ریست شدنApplication pool هاست، مشکلی برایsession ها به وجود نخواهد آمد.(session ها expire نمی شوند) بنابراین از این نوعsession برای سایت هایی که دارای session های سنگین می باشند استفاده می گردد.
دلایل مختلفی برای setupنمودن SQL Session Server وجود دارد:
- در سروهای اشتراکی اغلب پردازش های ASP.NET پاکسازی شده و از دست می رود. این موضوع باعث می شود تا متغیرهای session و احنمالا خود session منقضی شود.(بسته شود (.
- دلیل دیگر برای راه اندازی Session Server مصرف حافظه (Memory) می باشد که با استفاده از Session Server شما حافظه را برای اجرای برنامه آزاد خواهید کرد .
متاسفانه اسکریپت پیش فرض که Microsoft ارائه می دهد نیاز به نصب SQL Job دارد و اکثر شرکت های هاستینگ اجازه آن را به کاربر نمی دهد.
نکته: قبل از پیکربندی یک SQL Server برای session state، باید اسکریپت InstallSqlState.sql را روی سرور اجرا نمایید. بطور پیش فرض اسکریپت مذکور در %systemroot%Microsoft.NETFrameworkV2.0.50727 ذخیره می شود.
- پیکربندی یک SQL Server برای حفظ session state با استفاده از رابط کاربری:
- برنامه ی IIS Manager را باز کرده و روی سطحی که قصد مدیریت آنرا دارید کلیک نمایید.
- در قسمت Feature View روی Session State دو بار کلیک نمایید.
- در صفحه ی Session State و در قسمت Session State Mode Settings روی SQL Server کلیک نمایید.
- رشته ارتباطی را در قسمت Connection string تایپ کرده یا با کلیک روی Create جهت ایجاد یک رشته ارتباطی اقدام نمایید.اگر SQL Server بر روی سروری که در حال مدیریت کردن آن هستید قرار دارد، LocalSqlServer را در قسمت Connection string انتخاب نمایید.
- مقدار time-out را در قسمت Time-out تایپ کنید.
- (انتخابی) گزینه ی Enable custom database را برای استفاده از یک custom database جهت ذخیره سازی داده های session state انتخاب کنید.
- (انتخابی) در صفحه ی Session state تنظیمات cookie را در Cookie Settings پیکربندی نمایید.
- (انتخابی) گزینه ی Use hosting identity for impersonation را برای استفاده از احراز هویت ویندوز و هویت پروسس میزبان جهت ارتباط از راه دور با پایگاه داده ی SQL انتخاب نمایید.
- در پنجره Actions روی Apply کلیک نمایید.
تنظیمات ماژول Session State در IIS 7.5
- پیکر بندی SQL Server برای نگهداری session state در محیط Command-Line:
برای پیکربندی SQL Server جهت نگهداری session state، در محیط Command-Line دستور زیر را وارد نمایید:
[pre]
Appcmd set config /commit:WEBROOT /section:sessionState
mode:SqlServer /sqlConnectionString:string/
sqlCommandTimeout:timeSpan /useHostingIdentity:True|False/
[/pre]
متغیر mode:SqlServer وضعیت session state را برای ذخیره سازی داده های session در پایگاه داده ی SQL Server فعال می نماید. متغیر string رشته ارتباطی که SQL Server از آن استفاده می کند را بیان می نماید. مقدار string بطور پیش فرض LocalSqlServer است. متغیر timeSpan مدت زمانی که ارتباط با SQL Server حفظ می شود را بر حسب ثانیه بیان می کند که مقدار پیش فرض آن ۳۰ ثانیه است. متغیر True|False:useHostingIdentity احراز هویت ویندوز و هویت پروسس میزبان را برای ارتباط با پایگاه داده فعال یا غیر فعال می نماید که مقدار پیش فرض آن True می باشد.