فايل Web.Config را بهتر بشناسيم

شنبه 12 مرداد 1392

فايل Web.Config را بهتر بشناسيم <br/> بیشتر برنامه های کاربردی کامپیوتری دارای بخشی به نام Setup هستند که برای انجام تنظیمات متناسب با استفاده های مختلف کاربران مورد استفاده قرار می گیرد.

بیشتر برنامه های کاربردی کامپیوتری دارای بخشی به نام Setup هستند که برای انجام تنظیمات متناسب با استفاده های مختلف کاربران مورد استفاده قرار می گیرد.


برنامه های کاربردی مبتنی بر Web نیز که دارای کاربران زیادی هستند از این قائده مستثنی نیستند و احتیاج به انجام تنظیماتی متناسب با کاربردهای مختلف خود دارند.


در ASP.NET اینگونه تنظیمات که مربوط به منابع مورد استفاده برنامه کاربردی، اطلاعات محلی، اطلاعات امنیتی و… می شوند در داخل یک فایل XML ذخیره می شوند که نام آن Web.Config است و طبعا به مانند اسناد XML شامل تعدادی تگ (معادل Tag در HTML) است و به کوچک و بزرگ بودن حروف نیز حساس است (Case Sensitive).


در این مقاله به اختصار به توضیح در مورد تگهای مهم این فایل و چگونگی تنظیم خصوصیات مهم این تگها و کاربردهای آنها می پردازیم. پیش از ادامه مطلب این نکته را متذکر می شویم که این فایل شامل تعداد زیادی تگ با خصوصیات مختلف است که هر یک به جنبه ای از یک برنامه کاربردی تحت Web مربوط هستند. در این مقاله در مورد تگهای پرکاربرد و مهم این فایل و خصوصیات مهم آنها اطلاعاتی ارائه شده است برای به دست آوردن اطلاعات بیشتر در مورد هر یک از تگها و خواص آنها باید به منابع تخصصی مرتبط با هر بخش رجوع کرد.

محل و محدوده عملکرد فایل Web.Config

به طور طبیعی هر برنامه کاربردی Web در ASP.NET دارای حداقل یک فایل Web.Config در داخل دایرکتوری ریشه خود می باشد که به طور خودکار توسط Visual Studio .NET در زمان ایجاد این Web Application ایجاد شده و با مقادیر پیش فرض در دایرکتوری ریشه برنامه کاربردی قرار می گیرد.
ولی برنامه نویسان می توانند بر حسب نیازها و کاربردهای برنامه های خود تعداد بیشتری از این فایل XML را در داخل دایرکتوریهای مختلف برنامه ایجاد کنند و برای تنظیمات فایلهای داخل همان دایرکتوری یا زیر دایرکتوریهای آن به کار گیرند.


تنظیمات هر فایل Web.Config به فایلهای داخل زیر دایرکتوری‎ای که در آن قرار دارد و همچنین زیر دایرکتوریهای آن اعمال می شود. همچنین برنامه نویس می تواند از طریق کدهای داخل هر فایل Web.Config منابع و دایرکتوریهای مورد نظر را تغییر دهد. برای درک بهتر نحوه ارتباط فایلهای Web.Config در یک برنامه کاربردی Web، مثال زیر را بیان می کنیم.


اگر یک دایرکتوری به نام main و دو زیر دایرکتوری به نام Sub1 و Sub2 در برنامه کاربردی موجود باشند که در درون هر کدام از این دایرکتوریها یک فایل Web.Config قرار داشته باشد تنظیمات هر فایل Web.Config بر فایلهای داخل زیر دایرکتوری آن اعمال می شود اما اگر در یک فایل Web.Config که داخل زیر دایرکتوری Sub1 یا Sub2 قرار دارد یکی از تنظیماتی که در فایل Web.Config که داخل main قرار دارد صورت نگرفته باشد مقدار تنظیم شده در داخل فایل موجود در main به زیردایرکتوریها به ارث می رسد.


نکته ای که باید در اینجا به آن اشاره کرد این است که کاربران برنامه وب به محتوای فایلهای Web.Config دسترسی ندارند.


ساختار فایل Web.Config

هر فایل Web.Config شامل یک بخش پایه است که همان دو تگ <configuration> و<configuration/> هستند و بقیه محتوا درون این دو تگ قرار می گیرد. پس ساختار کلی هر فایل Web.Config به صورت زیر است:

کد:
<configuration><!–Some Configurations–></configuration>
محتوای هر فایل Web.Config شامل دو بخش اساسی است: معرفی و تنظیمات. بخش معرفی داخل دو تگ <configsectons> و <configsections/> قرار می گیرد و بخش تنظیمات، تنظیمات مربوط به منابع معرفی شده در این تگها را شامل می شود.
ابتدای فایل Web.Config و بعد از تگ <configuration> تگ <configsections> قرار دارد. داخل این تگ و تگ جفت آن یعنی <configsectons/> تگهایی جهت معرفی منابع و اداره کننده قسمتها قرار دارد. حال که با ساختار کلی فایل Web.Config آشنا شدیم در ادامه به توضیحاتی در مورد تگهای مهم این فایل و خصوصیات آنها می پردازیم.


Location

پیشتر اشاره شد که تنظیمات هر فایل Web.Config بر فایلهای داخل ریشه این فایل و زیردایرکتوری های آن اعمال می شوند، حال اگر بخواهیم تنظیمات یک فایل Web.Config را بر دایرکتوری خاصی اعمال کنیم تنها لازم است این تنظیمات را داخل یک جفت تگ <location> و <location/> قرار دهیم یعنی شکل کلی استفاده از این جفت تگ به صورت زیر است:

کد:
<location path=”url”><!–Configurations–></location>
اطلاعات محلی

از تگ <globalization> برای تعریف خصوصیات فرهنگی و زبانی برنامه کاربردی استفاده می شود. خواص مهم این تگ عبارتند از:


• culture: فرهنگ برنامه کاربردی را تعیین می کند.
• requestencoding: شکل رشته های درخواست شده را تعیین می کند (برای مثال Unicode).
• responseencoding: شکل رشته های پاسخ را تعیین می کند.


تگهای امنیتی

درون فایل Web.Config تگهایی جهت تنظیم مقادیر و خصوصیات امنیتی برنامه کاربردی قابل تعریف هستند. جفت تگهای <authentication> و<authentication/> و <authorization> و<authorization/> ساختارامنیتی درون فایل Web.Config را می سازند که دارای خصوصیات و مقادیر متفاوتی هستند که توضیح در مورد آنان به مباحث مقدماتی امنیت در ASP. NET بر می گردد ولی در زیر توضیح کوتاهی از هر یک از این جفت تگها ارائه می گردد.


تگ <authentication>: این جفت تگ به تعیین شکل تایید اعتبار در برنامه کاربردی تحت Web می پردازد. از طریق خصوصیت mode که چهار مقدار Form ،Passport ،Windows و None را می پذیرد می توان شکل تایید اعتبار را به ترتیب بر مبنای ساختار امنیتی IIS، سرویس تایید اعتبار Passport شرکت مایکروسافت، استفاده از cookieها و بدون استفاده از سیستم امنیتی تعیین کرد.


تگ <authorization>: این جفت تگ برای تعیین کاربران واجد شرایط و یا فاقد شرایط ورود به محدوده تحت کنترل فایل Web.Config استفاده می شود. با استفاده از دو تگ <allow> و <deny> می توان کاربرانی که اجازه ورود به محدوده تحت حفاظت را دارند و فاقد این اجازه هستند استفاده کرد.


خطای زمان اجرا

تگ <customerrors> جهت تعیین شکل عملکرد برنامه در زمان وقوع یک خطای پیش بینی نشده در زمان درخواست یک صفحه توسط کاربر به کار می رود. این تگ دارای دو صفت مهم است که در زیر توضیح داده شده اند.


• mode: این صفت جهت تعیین نوع عملکرد برنامه کاربردی در مواجهه با خطا به کار می رود و یکی از سه مقدار RemoteOnly ،On و Off را می گیرد. با تنظیم این صفت با مقدار RemoteOnly در صورت بروز خطای زمان اجرا صفحه از پیش تعیین شده در قسمت defaultredirect برای کاربران نشان داده خواهد شد ولی کاربرانی که بصورت محلی از برنامه استفاده می کنند (مقابل سرور نشسته اند) صفحه خودکار ASP.NET و جزئیات خطا را خواهند دید. با تنظیم این صفت با مقدار On در صورت بروز خطای زمان اجرا همواره صفحه از پیش تعیین شده در قسمت defaultredirect نشان داده خواهد شد. با تنظیم این صفت با مقدار Off صفحه خطای خودکار ASP. NET به نمایش در می آید که از لحاظ امنیتی گزینه مناسبی نیست.


• defaultredirect: آدرس Url فایلی را که برای نمایش خطا در زمان تنظیم خصوصیت mode با مقدار On یا RemoteOnly بکار می رود تعیین می کند.


وضعیت جلسه کاری

تگ <sessionState> برای تعیین وضعیت جلسه کاری مورد استفاده قرار می گیرد و مدت زمان یک جلسه کاری و همچنین شکل تعیین درخواست کاربران را تعیین می کند. از صفات مهم این تگ یکی Cookiless است که تعیین می کند جلسه کاری کاربران از طریق Cookieها یا SessionID ها نسبت داده شوند که دو مقدار true یا false را می گیرد: true برای استفاده از SessionID و false برای استفاده از Cookie.


خصیصه مهم دیگر این تگ mode است که یکی از چهار مقدار زیر را می گیرد:
• Off: جلسه کاری غیر فعال
• Inproc: اطلاعات به صورت In-process ذخیره می شوند.
• SQLServer: اطلاعات جلسه کاری توسط پایگاه داده SQL Server مدیریت می شوند.
• StateServer: اطلاعات توسط یک سرویس Out-Of-Process مدیریت می شوند.
خصوصیت مهم دیگر این تگ timeout است که زمان اعتبار جلسه کاری هر کاربر را بر حسب دقیقه تعیین می کند.


کامپایل برنامه کاربردی

تگ <compilation> برای تعیین خصوصیات مربوط به شکل کامپایل برنامه کاربردی مورد استفاده قرار می گیرد که دو خصیصه مهم آن عبارتند از:


• debug: یکی از دو مقدار true یا false را می گیرد (false پیش فرض است) و تعیین می کند که اطلاعات اشکال زدایی در اسمبلی های بعد از کامپایل قرار بگیرند یا خیر. با تنظیم این خصیصه با مقدار true این کار صورت می گیرد. و با تنظیم این خصیصه با مقدار false این کار صورت نمی گیرد.

• defaultlanguage: زبان برنامه نویسی مورد استفاده جهت کامپایل برنامه کاربردی (به صورت Dynamic) را تعیین می کند.

MohammadJavad

نویسنده 86 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید