اعمال تنظیمات دلخواه در ASP از طریق ماژول ASP در IIS 7.5
آشنایی با ماژول ASP
اگر قصد اعمال تنظیمات دلخواه در ASP (البته فرم کلاسیک و نه integrated) را دارید، ماژول ASP در دسترس شماست. باید توجه داشت این ماژول IIS در حالت دسترسی از دور ( remote ) به صورت قفل شده ارایه شده و صرفا به صورت مستقیم می توان آن را مدیریت کرد.
ماژول ASP زمانی کاربرد دارد که نرم افزار ( یا application ) در ASP نوشته شده باشد و قصد داشته باشید تنظیمات و پیکربندی مد نظرتان را برای نرم افزار طراحی شده اعمال کنید. تنظیماتی از قبیل نحوه کنترل رفع اشکال ( debugging ) ، تنظیمات بازگشت خطا، تنظیمات character set مورد استفاده در برنامه، زبان برنامه نویسی مورد استفاده در برنامه و اینکه آیا در صورت بروز خطا، رویداد ثبت شود یا خیر.
علاوه بر موارد فوق، ماژول ASP امکان پیکربندی این مواردیاز قبیل : +COM و ASP Caching و محدودیت های میانگیری (buffering) و Session State را نیز فراهم می کند.
نحوه دسترسی:
این ماژول را می توان در صفحه Application Home و زیر عنوان IIS یافت.
آشنایی با تنظیمات موجود در ماژول:
پس از انتخاب ASP، سه دسته تنظیم را می توان دید که عبارتند از: گروه اول مشی (behavior)، گروه دوم تفسیر (compilation) و گروه سوم سرویسها(services)
در گروه اول (behavior) می توان تنظیمات مانند codepage ، parentpath ، نحوه آغاز مجدد پس از تغییر پیکربندی ، chunked encoding و … را تغییر داد.
در گروه دوم (compilation)، به تنظیمات مربوط به رفع عیب (debugging) و زبان پیش فرض برنامه نویسی دسترسی خواهید داشت.
در گروه سوم، (services)، تنظیمات +com و cache و البته مهمتر از این دو، تنظیمات نشست یا Session (تعداد، زمان و …) در اختیار کاربر قرار دارد.
پیکربندی:
پیکربندی تمامی عناصر <ASP> -فرا تر از آنچه در GUI بالا توضیح داده شد-در سطح دسترسی سرور ( و نه site یا application ) به کمک ویرایش فایل ApplicationHost.config امکان پذیر است.
در جدول زیر با این موارد آشنا خواهیم شد:
ردیف | نام | کاربرد | حالت پیشفرض |
۱ |
| مجوز رفع اشکال سمت کاربر | غیرفعال |
۲ |
| مجوز رفع اشکال سمت سرور | غیرفعال |
۳ |
| مجوز میانگیری خروجی نرم افزار | فعال |
۴ |
| تعیین شماره خطی که خطا در آن رخ داده | فعال |
۵ |
| مجموعه کاراکتر های پیشفرض مختص یک نرم افزار | ۰ |
۶ |
| نحوه شروع مجدد پس از تغییر پیکربندی | فعال |
۷ |
| مجوز دسترسی به فایل همنام html با ASP برای مرورگر | فعال |
۸ |
| انتقال گروهی ( | فعال |
۹ |
| مجوز دسترسی به مسیر جاری یا بالاتر | غیرفعال |
۱۰ |
| مجوز ثبت خطاهای ASP در ویندوز | غیرفعال |
۱۱ |
| مجوز استثنا در رفع عیب | فعال |
۱۲ |
| تعیین محل پیسفرض برای شناسه ASP | ۰ |
۱۳ |
| مجوز ثبت خطاهای IIS در مرورگر کاربر و همینطور در log های IIS | فعال |
۱۴ |
| تنظیمات SessionOnEnd و ApplicationOnEnd | فعال |
۱۵ |
| پیغام خطای ارسالی به کاربر وقتی پیغام های رفع عیب ارسال نمی شوند | *** |
۱۶ |
| مجوز اشکال زدایی خاص مرورگر کاربر | غیرفعال |
۱۷ |
| زبان پیش فرض برای همه نرم افزارهای اجرا شده روی سرور وب | VBScript |
برای نمونه کد زیر، میانگیری (buffering) و session state را برای سایتی به نام yoursite فعال کرده و parent path را نیز از کار می اندازد.
[pre]
<location path=”yoursite”>
<system.webServer>
<asp enableParentPaths=”false” bufferingOn=”true”>
<session allowSessionState=”true” />
</asp>
</system.webServer>
</location>
[/pre]
ای کمک به تعدیل منابعی که IIS 7 استفاده خواهد کرد، شما می توانید تنظیمات را برای وضعیت جلسه معین کنید. برای مثال، ویژگی max در واقع حداکثر تعداد جلسات را جهت ذخیره سازی بیان می دارد و ویژگی timeout مدت زمان هر جلسه ی ASP را مشخص می کند. اگر برنامه ها نیازی به وضعیت جلسه نداشته باشند، با قرار دادن ویژگی allowSessionState به وضعیت false وضعیت جلسه ASP نمایش داده نخواهد شد.
قابلیت ها:
نسخه ی IIS 7.5: عنصر <session> در IIS 7.5 اصلاح نشده است.
نسخه ی IIS 7.0: عنصر <session> در <asp> در این نسخه از IIS معرفی شده است.
نسخه ی IIS 6.0: به جای عنصر <session>، ویژگی های IIS 6.0 metabase که در زیر اشاره شده جایگزین <session> شده اند:
- AspAllowSessionState
- AspKeepSessionIDSecure
- AspSessionMax
- AspSessionTimeout
راه اندازی:
برای پشتیبانی و پیکربندی (Configuration) برنامه های ASP بر روی وب سرورتان، بایستی ماژول ASP را نصب کنید.
[irp posts=”۶۹۰۶″ name=”هندلر چیست + تنظیم پسوند های فایل به هندلر مربوطه از طریق (Handler Mapping) در IIS 7.5″]
برای نصب ماژول ASP بنا به نسخه سیستم عامل ویندوزتان، مراحل زیر را انجام دهید:
در Windows Server 2008 یا Windows Server 2008 R2:
۱- در نوار taskbar روی start کلیک نمایید، سپس Administrative Tools را انتخاب کرده و روی Server Manager کلیک نمایید.
۲- در پنجره Server Manager گره ی Roles را باز کنید و روی (Web Server (IIS کلیک نمایید.
۳- در پنجره (Web Server (IIS، قسمت Role Services را آورده و روی Add Role Services کلیک نمایید.
۴- در پنجره Select Role Services از قسمت Add Role Services Wizard گزینه ASP را مانند شکل زیر انتخاب نمایید.
برای کمک به تعدیل منابعی که IIS 7 استفاده خواهد کرد، شما می توانید تنظیمات را برای وضعیت جلسه معین کنید. برای مثال، ویژگی max در واقع حداکثر تعداد جلسات را جهت ذخیره سازی بیان می دارد و ویژگی timeout مدت زمان هر جلسه ی ASP را مشخص می کند. اگر برنامه ها نیازی به وضعیت جلسه نداشته باشند، با قرار دادن ویژگی allowSessionState به وضعیت false وضعیت جلسه ASP نمایش داده نخواهد شد.
قابلیت ها:
نسخه ی IIS 7.5: عنصر <session> در IIS 7.5 اصلاح نشده است.
نسخه ی IIS 7.0: عنصر <session> در <asp> در این نسخه از IIS معرفی شده است.
نسخه ی IIS 6.0: به جای عنصر <session>، ویژگی های IIS 6.0 metabase که در زیر اشاره شده جایگزین <session> شده اند:
- AspAllowSessionState
- AspKeepSessionIDSecure
- AspSessionMax
- AspSessionTimeout
چگونگی پیکربندی تنظیمات وضعیت جلسه ASP برای یک وبسایت یا برنامه کاربردی از طریقManager IIS :
۱- برنامه ی Internet Information Services (IIS) Manager را باز کنید:
- در صورتیکه سیستم عامل شما Windows Server 2008 یا Windows Server 2008 R2 است، برای اجرای برنامه ی IIS Manager مراحل زیر را انجام دهید:
- در نوار taskbar روی گزینه ی start کلیک کنید و سپس گزینه ی Administrative Tools را انتخاب نموده و روی گزینه ی Internet Information Services (IIS) Manager کلیک نمایید.
- در صورتیکه سیستم عامل شما Windows Vista یا Windows 7 است، برای اجرای برنامه ی IIS Manager مراحل زیر را انجام دهید:
- در نوار taskbar روی گزینه ی start کلیک نمایید و سپس گزینه ی Control Panel را انتخاب کنید.
- روی گزینه ی Administrative Tools دو بار کلیک کنید و سپس روی Internet Information Services (IIS) Manager دو بار کلیک کنید.
۲- در پنجره ی Connections نام سرور خود را یافته و گره آنرا باز کنید. سپس گره ی Sites را باز کرده و وبسایت و یا برنامه کاربردی خود که قصد پیکربندی آنرا دارید انتخاب کنید.
۳- در پنجره Site Home یا Application Home ، روی ASP دو بار کلیک نمایید
۴- همانند شکل ۵، در پنجره ASP گره قسمت Session Properties را باز کنید و تنظیمات دلخواهتان را اعمال نمایید.
۵- حال کافی است روی گزینه ی Apply در پنجره ی Actions کلیک نمایید.
پیکربندی:
ویژگی ها(Attributes):
allowSessionState
: یک ویژگی Boolean قابل تغییر است. مشخص کننده فعال یا عدم فعال بودن پایداری وضعیت جلسه برای یک برنامه ی کاربردی است. مقدار پیش فرض آن true می باشد.
keepSessionIdSecure
: یک ویژگی Boolean قابل تغییر است. اگر یک کانال جلسه امن برای عبورSession ID اختصاص داده شود، مشخص میکند که آیا یک session ID بعنوان یک cookie امن ارسال شده است یا خیر. مقدار پیش فرض آن true می باشد. پیش از این درباره مفهوم cookies چیست بسیار صحبت کرده ایم.
- Max:یک ویژگی از نوع داده ی uint (عدد صحیح بدون علامت) است. حداکثر تعداد جلسات همزمان را معین می کند. مقدار پیشفرض آن ۴۲۹۴۹۶۷۲۹۵ است.
- Timeout: یک ویژگی از نوع timeSpan (گستره زمانی) میباشد که میتوان مقدار آن را تغییر داد. بیان کننده مدت زمان بین در خواست های ارسالی از هر شیء (Object) جلسه به سرور است. مقدار پیشفرض آن ۰۰:۲۰:۰۰ می باشد.
نمونه پیکربندی session در web.config:
نمونه ی پیکربندی زیر، وضعیت جلسه ASP را فعال کرده و حداکثر تعداد جلسات ASP را ۱۰۰۰ قرار می دهد. و مقدار time-out جلسه را برای وبسایت پیشفرض ۱۰ دقیقه قرار می دهد.
[pre]
<“location path=”Default Web Site>
<system.webServer>
<asp>
<“session allowSessionState=”true” max=”۱۰۰۰″ timeout=”۰۰:۱۰:۰۰>
</asp>
</system.webServer>
</location>
[/pre]
کد های نمونه:
AppCmd.exe:
کد زیر در واقع یک Command Line Tool برای مدیریت IIS 7 (و بالاتر) می باشد که تمام عملکرد کلیدی مدیریتی سرور را مشخص می کند. نمونه کد زیر که می بایستی در CMD (محیط command) وارد شود، وضعیت جلسه ASP را فعال می نماید و حداکثر تعداد جلسات همزمان ASP را ۱۰۰۰ قرار می دهد . سپس time-out جلسه را برای Default Web Site بر ۱۰ دقیقه قرار می دهد.
[pre]
appcmd.exe set config “Default Web Site” -section:system.webServer/asp /session.allowSessionState:”True” /commit:apphost
appcmd.exe set config “Default Web Site” -section:system.webServer/asp /session.max:”۱۰۰۰″ /commit:apphost
appcmd.exe set config “Default Web Site” -section:system.webServer/asp /session.timeout:”۰۰:۱۰:۰۰″ /commit:apphost
[/pre]
توجه: از قرار دادن پارامتر commit برای apphost زمانیکه از AppCmd.exe برای پیکربندی این تنظیمات استفاده می کنید، اطمینان حاصل نمایید.
در زبان برنامه نویسی C#:
[pre]
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection aspSection = config.GetSection(“system.webServer/asp”, “Default Web Site”);
ConfigurationElement sessionElement = aspSection.GetChildElement(“session”);
sessionElement[“allowSessionState”] = true;
sessionElement[“max”] = ۱۰۰۰;
sessionElement[“timeout”] = TimeSpan.Parse(“۰۰:۱۰:۰۰”);
serverManager.CommitChanges();
}
}
[/pre]
در زبان برنامه نویسی VB.NET:
[pre]
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim aspSection As ConfigurationSection = config.GetSection("system.webServer/asp", "Default Web Site")
Dim sessionElement As ConfigurationElement = aspSection.GetChildElement("session")
sessionElement("allowSessionState") = True
sessionElement("max") = 1000
sessionElement("timeout") = TimeSpan.Parse("00:10:00")
serverManager.CommitChanges()
End Sub
[/pre]
پیشنهاد می کنیم مقاله ویژوال بیسیک دات نت را مطالعه بفرمایید.
در زبان برنامه نویسی JavaScript:
[pre]
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var sessionElement = aspSection.ChildElements.Item("session");
sessionElement.Properties.Item("allowSessionState").Value = true;
sessionElement.Properties.Item("max").Value = 1000;
sessionElement.Properties.Item("timeout").Value = "00:10:00";
adminManager.CommitChanges();
[/pre]
در زبان برنامه نویسی
VBScript:
[pre]
Set adminManager = WScript.CreateObject(“Microsoft.ApplicationHost.WritableAdminManager”)
adminManager.CommitPath = “MACHINE/WEBROOT/APPHOST”
Set aspSection = adminManager.GetAdminSection(“system.webServer/asp”, “MACHINE/WEBROOT/APPHOST/Default Web Site”)
Set sessionElement = aspSection.ChildElements.Item(“session”)
sessionElement.Properties.Item(“allowSessionState”).Value = True
sessionElement.Properties.Item(“max”).Value = 1000
sessionElement.Properties.Item(“timeout”).Value = “۰۰:۱۰:۰۰”
adminManager.CommitChanges()
[/pre]
منابع: