در پاسخ به فایل ApplicationHost.config چیست بایستی گفت این فایل مربوطه دسته فایل های پیکربندی می باشد . محتوای آن شامل همه ی سایت ها ، برنامه های کاربردی، فلدرهای مجازی و application pool ها می شود.(مشابه machine.config,web.config برای انجام تنظیمات و .Net Framework) زمانیکه وب سرور نصب می شود این فایل تنها فایل قابل استفاده می باشد. بخش configSections برای ثبت کلیه ی register های IIS و بخش windows activation system مورد استفاده قرار می گیرد.
مسیر پیش فرض این فایل در فلدر system32inetsrv قرار دارد که در نسخه های جدید iis در مسیر system32inetsrvconfig قرار گرفته است.÷پیچیده ترین بخش این فایل قسمت system.webServer است بنابراین تسلط به آن ضروری می باشد.
نکات زیر را در نظر داشته باشید :
%windir%system32inetsrvconfigschemaIIS_Schema.xml
ASPNET_Schema.xml و FX_Schema.xml نامهای دیگر این فایل می باشند.
در ادامه مقاله در مورد ساختار شما (schema) و کارهایی که می توانید بر روی آن انجام دهید صحبت خواهیم کرد.
همانطوریکه قبلا نیز گفته شد، برای هر section یک سری اطلاعات schema وجود دارد. بنابراین مقادیر مناسب هر بخش و صفات آنها به همراه رنجی که مجاز هستند قابل تشخیص می باشند.
شما برای هر بخش
پیکربندی در قالب یک فایل xml تعریف شده است.
برای خواندن شما از قالب دستور زیر استفاده می کنیم
<attribute-name>=”<default-value>” [<metadata>] [<description>]
نام صفت می باشد و هر صفت بایستی دارای یک نام باشد.
مقدار پیش فرضی که مورد استفاده است در آن قرار می گیرد اگر این مقدار خالی باشد و هیچ صفتی دارای مقدار پیش فرض نخواهد بود
چندین آیتم را می توان در این بخش تعریف کرد
نوع اجرایی صفت که می تواند BOOL,ENUM,FLAGS,INT,INT64,STRING,TIMESPAN باشد.
به عنوان مثال Timespan نمایش دهنده ی واحد زمان است که یک عدد و یا رشته در آن قرار می گیرد.
توصیفی در مورد صفت تعریف شده می باشد.
تگ <sectionSchema> واحد اصلی اطلاعات شما می باشد.یکی از صفات آن name است و سایر صفات زیر مجموعه ای از این صفت می شوند .نمونه این تگ به شرح زیر است :
<sectionSchema name=”” <!– [String, Required] [XML full path of the section] –> >
<!– sub-elements here describing rest of schema; –>
<!– their description is right below in the doc. –>
</sectionSchema>
در امتداد مقاله فایل ApplicationHost.config چیست به بررسی attribute می پردازیم.
برای تعریف هر صفت از تگ <attribute> استفاده می شود . عنصر <attribute> را می توان مستقیما در <sectionSchema> و یا <collection> تعریف کرد. شمای <attribute> بایستی یک نام و نوع داشته باشداین تگ می تواند یک مقدار پیش فرض داشته باشد.همچنین قالب timespan را می توان در این تگ تعریف کرد.همچنین قوانین اعتبار سنجی را نیز توسط این تپ می توان تعریف کرد.
در زیر نمونه ای از این تگ به همراه مقادیر آن آورده شده است :
<attribute>
name=”” [String, Required] [XML name of the attribute]
type=”” [bool|enum|flags|int|int64|string|timeSpan, Required][Runtime type]
required=”false” [bool] [Indicates if must be set]
isUniqueKey=”false” [bool] [Serves as the collection key]
isCombinedKey=”false” [bool] [Part of a multi-attribute key]
defaultValue=”” [String] [Default value or comma-delimited flags]
encrypted=”false” [bool] [Indicates if value persisted encrypted]
allowInfinite=”false” [bool] [Indicates if “Infinite” can be set]
timeSpanFormat=”string” [string|seconds|minutes] [hh:mm:ss or number]
validationType=”” [See validation below]
validationParameter=”” [See validation below]
/>
عنصر sectionSchema مبنای اطلاعات شما می باشد.
هر عنصر در تگ <element> تعریف می شود. عناصر می توانند به شکل سلسله مراتبی تعریف شوند. یک المنت نگهدارنده ای برای سایر صفات است.
هر مجموعه در تگ <collection> قرار می گیرد COLLECTION ها شامل چندین عنصر می باشند سایر تگ هایی که در این عنصر قرار می گیرند شامل : Add,Remove,Clear می باشند اما برخی دیگر از عباراتی مانند site به جای add استفاده می کنند. به عنوان مثال دو سطح پیکربندی زیر را در نظر بگیرید :
فایل ApplicationHost.config و web.config در فایل اولی مقدار collection به شکل زیر است :
<myCollection>
<add value=”۱″/>
</myCollection>
و در دومی معادل :
<myCollection>
<add value=”۲″ />
</myCollection>
با ادغام این دومقدار زیر را خواهیم داشت
<myCollection>
<add value=”۱″/>
<add value=”۲″/>
</myCollection>
با قرار دادن مقدار زیر در شما می توان به collection اجازه داد تا مداخل های آن تکرار شوند. این تکنیک بیشتر در .Net Framework به جهت پشتیبانی از legacy collections انجام می شود برای آشنایی بیشتر در مورد net framework. چیست مقاله ی ما را مطالعه نمایید.
allowDuplicates=”true”
در برخی collection ها صفات اضافی نیز میتوان قرار داد :
با قرار دادن صفت زیر این امکان فراهم میگردد
allowUnrecognizedAttributes=”true”
یک نمونه collection به همراه صفات آن در زیر آمده است
<collection>
addElement=”” [String] [Name of Add directive, if supported] removeElement=”” [String] [Name of Remove directive, if supported] clearElement=”” [String] [Name of Clear directive, if supported] defaultElement=”” [applicationDefaults|applicationPoolDefaults|siteDefaults|virtualDirectoryDefaults] [See isCollectionDefault] mergeAppend=”true” [bool] [Indicates whether or not deepest set values are appended] allowDuplicates=”false” [bool] [Indicates if multiple elements may have the same keys] allowUnrecognizedAttributes=”false” [bool] [Indicates if non-schema attributes ok] />
هر صفتی از نوع enum بایستی توسط تگ <enum> تغریف شود هر مقدار بایستی یک نام ومقدار عددی را داشته باشد .
<enum name=”” [String, Required] [Friendly name of the enum] value=”” [int, Required] [Numeric value] />
هر صفتی از flag بایستی توسط تگی با همین نام در شما تعریف شود.هر flag دارای نامو مقداری است که با ترکیب شدن آن با مقادیر دیگر یک combination را شکل دهی نماید در این رابطه مثال زیر را مشاده نمایید :
<flags
name=”” [String, Required] [Friendly name of the flag] value=”” [int in power of 2, Required] [Numeric value] />
این اعتبار سنجی زمانی انجام می شود که بخواهم بخشی از XML را از یک فایل بخوانیم. در صورتیکه این اعتبار سنجی fail شود ، عملیات مورد نظر نیز لغو میگردند.
هر صفت میتواند یک اعتبار سنج برای مقدارش تعریف نماید. اعتبار سنج های زیر پشتیبانی می شوند :
از آن برای بررسی برخی کاراکترها استفاده می شود و زمانیکه از کارکترهایی |<>&” مانند استفاده شود fail می شود.
نمونه
validationType=”applicationPoolName” validationParameter=””
IntegerRange validator
برای بررسی یک محدوده عدد مورد استفاده قرار میگیرد.اگراز مقدار تعریف شده بیشتر باشد اعتبار سنج با خطا روبرو می شود .
validationType=”integerRange”
validationParameter=”<minimum>,<maximum>[,exclude]”
NonEmptyString validator
اگر یک رشته وارد شود اعتبار سنج مذکور fail می شود.
validationType=”nonEmptyString”
validationParameter=””
با وارد شدن کارکترهایی مانند /.? این اعتبار سنج خطا را گزارش می دهد.
validationType=”siteName”
validationParameter=””
اگر عدد وارد شده بر حسب زمان از محدوده تعریف شده بیشتر باشد این اعتبار سنج خطایی را گزارش میدهد:
نمونه :
validationType=”timeSpanRange”
validationParameter=”<minimum>,<maximum>,<granularity>[,exclude]”
هر فایل پیکربندی مجموعه ای از تگ XML است که میتواند با خطی مشابه زیر آغاز گردد :
<?xml version=”۱.۰″ encoding=”UTF-8″ ?>
همچنین کل محتوای آن نوع فایل ها در تگ<configuration> قرار می گیرد :
در این تگ لیست سایر تگ ها قرار می گیرد. سایر فایل های پیکربندی نیز میتوانند دارای چنین بخشی باشند که در بالاترین سطح فایل قرار گرفته باشد.در فایل های web.config از بخش هایی که در سطح والد تعریف شده است نمی توان استفاده کرد وهمچنین نمی توان بخش های دیگر را در این سطح حذف کنند.
نمونه ای از این تگ به شکل زیر میباشد :
<section
name=”” [Required, Collection Key] [XML name of the section]
allowDefinition=”Everywhere” [MachineOnly|MachineToApplication|Everywhere] [Level where it can be set]
overrideModeDefault=”Allow” [Allow|Deny] [Default delegation mode]
/>
بیشتر section ها در IIS به طور پیش فرض در حالت قفل شده قرار دارندبا قرار دادن دستور زیر در تگ section میتوان عملیات قفل گذاری را انجام داد :
overrideModeDefault=”Deny”
به منظروبرداشتن قفل از کدها زیر استفاده نمایید :
<location path=”Default Web Site” overrideMode=”Allow” >
<system.webServer>
<asp/>
</system.webServer>
</location>
این کدها تنها برای وب سایت جاری عمل کرده و اگر قصد دارید عملیات قفل گذاری بر روی سایر سایت ها نیز انجام شود کافی است از کد زیر استفاده کنید :
<location path=”.” overrideMode=”Allow”>
<system.webServer>
<asp/>
</system.webServer>
</location>
نکته : در کد بالا هر دو کد path=”.” and path=”” یکسان می باشند. امیدواریم با مفهوم فایل ApplicationHost.config چیست آشنا شده باشید.
آموزش گامبهگام حذف محدودیت Grace Period در Remote Desktop Services یکی از مشکلات رایج در…
پروتکل Remote Desktop Protocol (RDP) یکی از متداولترین روشها برای مدیریت سرورهای ویندوزی از راه…
شبکه های ارتباطی در طی چند دهه اخیر دچار تحولات بنیادینی شده اند. در آغاز،…
مایکروسافت با انتشار نسخه ی ویندوز سرور 2025، یک بار دیگر ثابت کرده که در…
حملات DDoS (Distributed Denial of Service) یکی از پیچیدهترین و مخربترین تهدیدات سایبری برای وبسایتها…
PyTorch یک چارچوب ماشین لرنیگ اوپن سورس پرکاربرد است که به دلیل سهولت استفاده، نمودار…