آموزش ASP.Net

آموزش ASP.Net - پیکربندی

عملکرد ASP.NET application تا حد زیادی تحت تاثیر تنظیمات مختلفی است که در فایل های پیکربندی (configuration file) لحاظ می شود. این فایل ها عبارتند از:

  • machine.config
  • web.config

فایل machine.config دربرداندۀ مقدار پیش فرض و ویژۀ ماشین (machine-specific) برای کلیۀ تنظیمات (setting) پشتیبانی شده می باشد. تنظیمات سیستم (system settings) تنها توسط مدیر سیستم (system administrator) کنترل و اداره می شود. بطور کلی application ها اجازۀ دسترسی به فایل مزبور را ندارند.

با این حال می توان با ایجاد فایل web.config و جای گذاری آن در پوشۀ اصلی (root folder) application، به آن اجازۀ بازنویسی (override) مقادیر پیش فرض را داد. فایل نام برده زیر مجموعۀ فایل machine.config می باشد.

چنانچه application مورد نظر دارای child directory (زیر پوشه) است، در آن صورت می تواند یک فایل web.config به ازای هر پوشه ایجاد کند. محدوده ی (scope) تک تک فایل های پیکربندی به صورت سلسله مراتبی از بالا به پایین تعیین می شود.

کلیۀ فایل های web.config می توانند به صورت محلی تنظیمات تعریف شده در سطح بالاتر از خود را بسط داده (extend)، محدود ساخته و یا بازنویسی (override) کند.

Visual Studio به صورت پیش فرض یک فایل web.config ویژه ی کلیه ی پروژه های موجود ایجاد می کند. اگرچه یک برنامه (application) می تواند بدون نیاز به فایل web.config اجرا شود، اما امکان اشکال زدایی آن بدون وجود فایل ذکر شده وجود ندارد.

تصویر زیر نمونه ای از application ایجاد شده در مبحث web service را نمایش می دهد:

solution explorer 2

در application فوق، دو فایل web.config مشاهده می کنید که هر یک ویژۀ یک پروژه ایجاد شده است. یکی از آن ها web service است و دیگری وب گاهی (web site) که آن web service را فرا می خواند.

المان configuration در فایل web.config گرۀ اصلی (root node) می باشد. اطلاعات داخل این المان به دو area (بخش) تقسیم شده:configuration section-handler declaration area و configuration section settings area. تکه کد زیر نحوه ی کلی نگارش (basic syntax) فایل پیکربندی (configuration file) را نمایش می دهد:

<configuration>

   <!-- Configuration section-handler declaration area. -->
      <configSections>
         <section name="section1" type="section1Handler" />
         <section name="section2" type="section2Handler" />
      </configSections>
   <!-- Configuration section settings area. -->
   
   <section1>
      <s1Setting1 attribute1="attr1" />
   </section1>
   
   <section2>
      <s2Setting1 attribute1="attr1" />
   </section2>
   
   <system.web>
      <authentication mode="Windows" />
   </system.web>
   
</configuration>

 

Configuration Section Handler declaration

Configuration Section Handler ها داخل تگ های قرار دارند. هر configuration handler اسم یک بخش (section) configurationرا داخل فایل مشخص می کند، که داده یا اطلاعاتی دربارۀ پیکربندی (configuration data) ارائه می دهد.

نحوۀ کلی نگارش (syntax) آن به ترتیب زیر می باشد:

<configSections>
   <section />
   <sectionGroup />
   <remove />
   <clear/>
</configSections>

تگ < configSections > دارای المان های زیر می باشد:

  • : clear کلیه ی ارجاعات به section و section group های به ارث برده را حذف می کند.
  • Remove : ارجاع به section و section group به ارث برده را حذف می کند.
  • Section: یک رابطه یا پیوستگی بین configuration section و المان configuration ایجاد (تعریف) می کند.
  • Section group : یک ارتباط بین configuration section handler و configuration section ایجاد می کند.

تنظیمات برنامه (Application Settings)

Application Settings امکان ذخیره سازی جفت های کلید-مقدار (key-value pair) مربوط به کل application برای دسترسی در سطح read-only را فراهم می آورد. برای مثال می توانید کنترل برنامه سفارشی را مانند زیر تعریف نمایید:

<configuration>
   <appSettings>
      <add key="Application Name" value="MyApplication" /> 
   </appSettings>
</configuration>

برای مثال، می توان اسم کتاب و شمارۀ ISBN آن را ذخیره کرد:

<configuration>
   <appSettings>
      <add key="appISBN" value="0-273-68726-3" />
      <add key="appBook" value="Corporate Finance" />
   </appSettings>
</configuration>

Connection Strings

Connection strings نشان می دهد کدام database connection stringها برای وبگاه (website) در دسترس می باشد.

<connectionStrings>
   <add name="ASPDotNetStepByStepConnectionString" 
      connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source=E:\projectsdatacaching /
      datacachingApp_DataASPDotNetStepByStep.mdb"
      providerName="System.Data.OleDb" />
      
   <add name="booksConnectionString" 
      connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source=C: databindingApp_Databooks.mdb"
      providerName="System.Data.OleDb" />
</connectionStrings>

المان System.Web

المان system.web عنصر ریشۀ(root element) بخش پیکربندی (configuration section) ASP.NET را مشخص کرده و همچنین دربرداندۀ configuration element هایی است که ASP.NET Web application ها را تنظیم / پیکربندی کرده و رفتار (نحوه ی عملکرد) application را مدیریت می کند.

المان system.web دربردانده ی بیشتر configuration element هایی می باشد که باید در برنامه های مختلف تطبیق داده شوند (adapt).

<system.web> 
   <anonymousIdentification> 
   <authentication> 
   <authorization> 
   <browserCaps> 
   <caching> 
   <clientTarget> 
   <compilation> 
   <customErrors> 
   <deployment> 
   <deviceFilters> 
   <globalization> 
   <healthMonitoring> 
   <hostingEnvironment> 
   <httpCookies> 
   <httpHandlers> 
   <httpModules> 
   <httpRuntime> 
   <identity> 
   <machineKey> 
   <membership> 
   <mobileControls> 
   <pages> 
   <processModel> 
   <profile> 
   <roleManager> 
   <securityPolicy> 
   <sessionPageState> 
   <sessionState> 
   <siteMap> 
   <trace> 
   <trust> 
   <urlMappings> 
   <webControls> 
   <webParts> 
   <webServices> 
   <xhtmlConformance> 
</system.web>

در این بخش فهرستی از sub element های متداول المان system.web به همراه توصیفی مختصر درباره ی هر یک از آن ها مشاهده می کنیم:

AnonymousIdentification

از این sub element به منظور شناسایی کاربرهایی که احراز هویت و اعتبار سنجی نشده اند، به هنگام نیاز به اعطاء مجوز (authorization) استفاده می شود.

Authentication

قابلیت authentication (اعتبار سنجی) را پیکربندی می کند (تنظیمات آن را انجام می دهد). نحوۀ کلی نگارش (syntax) آن به شرح زیر می باشد:

<authentication mode="[Windows|Forms|Passport|None]"> 
   <forms>...</forms>
   <passport/>
</authentication>

Authorization

امکان authorization (اعطا مجوز) را تنظیم و پیکربندی می کند.

<authorization> 
   <allow .../>
   <deny .../>
</authorization>

Caching

تنظیمات مربوط به cacheحافظۀ نهان و ذخیره سازی موقت داده ها) را پیکربندی می کند.

<caching>
   <cache>...</cache>
   <outputCache>...</outputCache>
   <outputCacheSettings>...</outputCacheSettings>
   <sqlCacheDependency>...</sqlCacheDependency>
</caching>

CustomErrors

پیام های مربوط به custom error ها را تعریف می کند.

<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">
   <error. . ./>
</customErrors>

Deployment

تنظیمات پیکربندی (configuration setting) که برای آماده سازی و مستقر کردن (deployment) بکار می رود را تعریف می کند: Syntax

<deployment retail="true|false" />

HostingEnvironment

تنظیمات پیکربندی مربوط به hosting environment را انجام می دهد. نحوه ی کلی نگارش این sub element به ترتیب زیر می باشد:

<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" 
   shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />

Identity

هویت یا identity برنامه (application) را تنظیم (پیکربندی) می کند. Syntax آن به شرح زیر می باشد:

<identity impersonate="true|false" userName="domainusername"
   password="<secure password>"/>

MachineKey

کلیدهایی که برای رمز گذاری (encrypt) و رمز گشایی (decrypt) داده های authentication cookie، Form ها بکار می رود را پیکربندی می کند / کلیدهایی که برای احراز هویت اطلاعات فرم های ذخیره شده در کوکی را استفاده می شود را encrypt و decrypt می کند.

همچنین اجازه ی ساخت و پیکربندی validation key هایی را می دهد که پیام های هویت سنجی را در داده های view-state و فرم های authentication ticket بررسی می کند.

<machineKey validationKey="AutoGenerate,IsolateApps" [String]
   decryptionKey="AutoGenerate,IsolateApps" [String]
   validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
   HMACSHA384 | HMACSHA512 | alg:algorithm_name]
   decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

Membership

این Sub element پارامترهای (مربوط به) مدیریت و احراز هویت حساب های کاربری (user account) را تنظیم و پیکربندی می کند. دستور نگارش کلی این sub element از قرار زیر می باشد:

<membership defaultProvider="provider name"
   userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1">
   <providers>...</providers>
</membership>

Pages

تنظیمات و پیکربندی مختص و مربوط به صفحه را انجام می دهد. دستور کلی نگارش sub element به صورت زیر می باشد:

<pages asyncTimeout="number" autoEventWireup="[True|False]"
      buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]"
      compilationMode="[Always|Auto|Never]" 
      controlRenderingCompatibilityVersion="[3.5|4.0]"
      enableEventValidation="[True|False]"
      enableSessionState="[True|False|ReadOnly]"
      enableViewState="[True|False]"
      enableViewStateMac="[True|False]"
      maintainScrollPositionOnPostBack="[True|False]" 
      masterPageFile="file path" 
      maxPageStateFieldLength="number" 
      pageBaseType="typename, assembly"
      pageParserFilterType="string" 
      smartNavigation="[True|False]"
      styleSheetTheme="string"
      theme="string"
      userControlBaseType="typename"
      validateRequest="[True|False]"
      viewStateEncryptionMode="[Always|Auto|Never]" >
   
   <controls>...</controls>
   <namespaces>...</namespaces>
   <tagMapping>...</tagMapping>
   <ignoreDeviceFilters>...</ignoreDeviceFilters>
</pages>

Profile

پارامترهای پروفایل کاربر (user profile) را تنظیم می کند. Syntax:

<profile enabled="true|false" inherits="fully qualified type reference"
   automaticSaveEnabled="true|false" defaultProvider="provider name">
   
   <properties>...</properties>
   <providers>...</providers>
   
</profile>

RoleManager

تنظیمات مربوط به نقش کاربری (user role) را پیکربندی می کند.

<roleManager cacheRolesInCookie="true|false" cookieName="name"
   cookiePath="/" cookieProtection="All|Encryption|Validation|None"
   cookieRequireSSL="true|false " cookieSlidingExpiration="true|false "
   cookieTimeout="number of minutes" createPersistentCookie="true|false"
   defaultProvider="provider name" domain="cookie domain"> 
   enabled="true|false"
   maxCachedResults="maximum number of role names cached"
   
   <providers>...</providers>
</roleManager>

SecurityPolicy

تنظیمات مربوط به security policy را پیکربندی می کند.

<securityPolicy>
   <trustLevel />
</securityPolicy>

UrlMappings

با تعریف mapping (نگاشت) های جدید url اصلی را مخفی ساخته و یک url کاربر پسند تر بجای آن ارائه می دهد.

<urlMappings enabled="true|false">
   <add.../>
   <clear />
   <remove.../>
</urlMappings>

WebControls

مکان مشترک برای اسکریپت های کلاینت (client script) را فراهم می سازد. نحوه ی نگارش این sub element به شرح زیر می باشد:

<webControls clientScriptsLocation="String" />

WebServices

این sub element سرویس های وب (web service) را پیکربندی می کند.

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش ASP.Net

Learn ASP.Net

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...