نماد سایتنماد سایت بلاگ ایران هاست

فایل ApplicationHost.config چیست و هر آنچه که بایستی در مورد آن بدانید

IISIIS

در پاسخ به فایل ApplicationHost.config چیست بایستی گفت این فایل مربوطه دسته فایل های پیکربندی می باشد . محتوای آن شامل همه ی سایت ها ، برنامه های کاربردی، فلدرهای مجازی و application pool ها می شود.(مشابه machine.config,web.config برای  انجام تنظیمات و .Net Framework) زمانیکه وب سرور نصب می شود این فایل تنها فایل قابل استفاده می باشد.بخش configSections برای ثبت کلیه ی register های IIS  و بخش windows activation system مورد استفاده قرار می گیرد.

مسیر پیش فرض این فایل در فلدر system32inetsrv قرار دارد که در نسخه های جدید iis در مسیر system32inetsrvconfig قرار گرفته است.÷پیچیده ترین بخش این فایل قسمت system.webServer است بنابراین تسلط به آن ضروری می باشد.

[irp posts=”۴۰۷۹″ name=”معرفی وب سرور IIS 7.5″]

نکات زیر را در نظر داشته باشید :

%windir%system32inetsrvconfigschemaIIS_Schema.xml

ASPNET_Schema.xml و FX_Schema.xml نامهای دیگر این فایل می باشند.

در ادامه مقاله در مورد ساختار شما (schema) و کارهایی که می توانید بر روی آن انجام دهید صحبت خواهیم کرد.

چگونه می توان فایل شما (schema) را خواند :

همانطوریکه قبلا نیز گفته شد، برای هر section یک سری اطلاعات schema وجود دارد. بنابراین مقادیر مناسب هر بخش و صفات آنها به همراه رنجی که مجاز هستند قابل تشخیص می باشند.

شما برای هر بخش

پیکربندی در قالب یک فایل xml تعریف شده است.

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

<attribute-name>=”<default-value>”  [<metadata>] [<description>]

attribute-name:

نام صفت می باشد و هر صفت بایستی دارای یک نام باشد.

<default-value> :

مقدار پیش فرضی که مورد استفاده است در آن قرار می گیرد اگر این مقدار خالی باشد و هیچ صفتی دارای مقدار پیش فرض نخواهد بود

<metadata> :

چندین آیتم را می توان در این بخش تعریف کرد

نوع اجرایی صفت که می تواند BOOL,ENUM,FLAGS,INT,INT64,STRING,TIMESPAN باشد.

به عنوان مثال Timespan نمایش دهنده ی واحد زمان است که یک عدد و یا رشته در آن قرار می گیرد.

<description> :

توصیفی در مورد صفت تعریف شده می باشد.

بخش schema چیست ؟

تگ <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> استفاده می شود . عنصر <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  مبنای اطلاعات شما می باشد.

عناصر schema

هر عنصر در تگ <element> تعریف می شود. عناصر می توانند به شکل سلسله مراتبی تعریف شوند. یک المنت نگهدارنده ای برای سایر صفات است.

مجموعه schema ها

هر مجموعه در تگ <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 schema 

هر صفتی از نوع enum بایستی توسط تگ <enum> تغریف شود هر مقدار بایستی یک نام  ومقدار عددی را داشته باشد .

<enum name=””  [String, Required] [Friendly name of the enum] value=”” [int, Required] [Numeric value] />

Flags schema

هر صفتی از flag بایستی توسط تگی با همین نام در شما تعریف شود.هر flag دارای نامو مقداری است که با ترکیب شدن آن با مقادیر دیگر یک combination را شکل دهی نماید در این رابطه مثال زیر را مشاده نمایید :

<flags
name=””  [String, Required] [Friendly name of the flag] value=”” [int in power of 2, Required] [Numeric value] />

اعتبار سنجی صفات

این اعتبار سنجی زمانی انجام می شود که بخواهم بخشی از XML را از یک فایل بخوانیم. در صورتیکه این اعتبار سنجیfail شود ، عملیات مورد نظر نیز لغو میگردند.

هر صفت میتواند یک اعتبار سنج برای مقدارش تعریف نماید. اعتبار سنج های زیر پشتیبانی می شوند :

ApplicationPoolName validator چیست ؟

از آن برای بررسی برخی کاراکترها استفاده می شود و زمانیکه از کارکترهایی |<>&” مانند استفاده شود failمی شود.

نمونه

validationType=”applicationPoolName” validationParameter=””

IntegerRange validator

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

validationType=”integerRange”
validationParameter=”<minimum>,<maximum>[,exclude]”

NonEmptyString validator

اگر یک رشته وارد شود اعتبار سنج مذکور fail می شود.

validationType=”nonEmptyString”
validationParameter=””

SiteName validator

با وارد شدن کارکترهایی مانند /.? این اعتبار سنج خطا را گزارش می دهد.

validationType=”siteName”
validationParameter=””

TimeSpanRange validator

اگر عدد وارد شده بر حسب زمان از محدوده تعریف شده بیشتر باشد این اعتبار سنج خطایی را گزارش میدهد:

نمونه :

validationType=”timeSpanRange”

validationParameter=”<minimum>,<maximum>,<granularity>[,exclude]”

هدر فایل xml چیست ؟

هر فایل پیکربندی مجموعه ای از تگ XML است که میتواند با خطی مشابه زیر آغاز گردد :

<?xml version=”۱.۰″ encoding=”UTF-8″ ?>

همچنین کل محتوای آن نوع فایل ها در تگ<configuration> قرار می گیرد :

بخش configsection

در این تگ لیست سایر تگ ها قرار می گیرد. سایر فایل های پیکربندی نیز میتوانند دارای چنین بخشی باشند که در بالاترین سطح فایل قرار گرفته باشد.در فایل های 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]

/>

Locking یا قفل گذاری چیست ؟

بیشتر 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 چیست آشنا شده باشید.

سوالات متداول

این فایل مربوطه دسته فایل های پیکربندی می باشد . محتوای آن شامل همه ی سایت ها ، برنامه های کاربردی، فلدرهای مجازی و application pool ها می شود.(مشابه machine.config,web.config برای انجام تنظیمات و .Net Framework) زمانیکه وب سرور نصب می شود این فایل تنها فایل قابل استفاده می باشد.بخش configSections برای ثبت کلیه ی register های IIS و بخش windows activation system مورد استفاده قرار می گیرد.
برای تعریف هر صفت از تگ استفاده می شود . عنصر را می توان مستقیما در و یا تعریف کرد. شمای بایستی یک نام و نوع داشته باشداین تگ می تواند یک مقدار پیش فرض داشته باشد.همچنین قالب timespan را می توان در این تگ تعریف کرد.همچنین قوانین اعتبار سنجی را نیز توسط این تپ می توان تعریف کرد.
از آن برای بررسی برخی کاراکترها استفاده می شود و زمانیکه از کارکترهایی |<>&” مانند استفاده شود fail می شود.
خروج از نسخه موبایل