مشخصات مقاله
-
1629
-
0.0
-
7543
-
0
-
2
آموزش پیکربندی ASP.NET Configuration
پیکربندی (configuration) – 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 را نمایش می دهد:
در 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 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 ها داخل تگ های
نحوه ی کلی نگارش (syntax) آن به ترتیب زیر می باشد: تگ < configSections > دارای المان های زیر می باشد: Application Settings امکان ذخیره سازی جفت های کلید-مقدار (key-value pair) مربوط به کل application برای دسترسی در سطح read-only را فراهم می آورد. برای مثال، می توان اسم کتاب و شماره ی ISBN آن را ذخیره کرد: Connection strings نشان می دهد کدام database connection stringها برای وبگاه (website) در دسترس می باشد. المان system.web عنصر ریشه ی (root element) بخش پیکربندی (configuration section) ASP.NET را مشخص کرده و همچنین دربردانده ی configuration element هایی است که ASP.NET Web application ها را تنظیم / پیکربندی کرده و رفتار (نحوه ی عملکرد) application را مدیریت می کند. المان system.web دربردانده ی بیشتر configuration element هایی می باشد که باید در برنامه های مختلف تطبیق داده شوند (adapt). در این بخش فهرستی از sub element های متداول المان system.web به همراه توصیفی مختصر درباره ی هر یک از آن ها مشاهده می کنیم: از این sub element به منظور شناسایی کاربرهایی که احراز هویت و اعتبار سنجی نشده اند، به هنگام نیاز به اعطاء مجوز (authorization) استفاده می شود. قابلیت authentication (اعتبار سنجی) را پیکربندی می کند (تنظیمات آن را انجام می دهد). نحوه ی کلی نگارش (syntax) آن به شرح زیر می باشد: امکان authorization (اعطا مجوز) را تنظیم و پیکربندی می کند. تنظیمات مربوط به cache (حافظه ی نهان و ذخیره سازی موقت داده ها) را پیکربندی می کند. پیام های مربوط به custom error ها را تعریف می کند. تنظیمات پیکربندی ((configuration setting که برای آماده سازی و مستقر کردن (deployment) بکار می رود را تعریف می کند. Syntax: تنظیمات پیکربندی مربوط به hosting environment را انجام می دهد. نحوه ی کلی نگارش این sub element به ترتیب زیر می باشد: هویت یا identity برنامه (application) را تنظیم (پیکربندی) می کند. Syntax آن به شرح زیر می باشد: کلیدهایی که برای رمز گذاری (encrypt) و رمز گشایی (decrypt) داده های authentication cookie، Form ها بکار می رود را پیکربندی می کند / کلیدهایی که برای احراز هویت اطلاعات فرم های ذخیره شده در کوکی را استفاده می شود را encrypt و decrypt می کند. همچنین اجازه ی ساخت و پیکربندی validation key هایی را می دهد که پیام های هویت سنجی را در داده های view-state و فرم های authentication ticket بررسی می کند. این Sub element پارامترهای (مربوط به) مدیریت و احراز هویت حساب های کاربری (user account) را تنظیم و پیکربندی می کند. دستور نگارش کلی این sub element از قرار زیر می باشد: تنظیمات و پیکربندی مختص و مربوط به صفحه را انجام می دهد. دستور کلی نگارش sub element به صورت زیر می باشد: پارامترهای پروفایل کاربر (user profile) را تنظیم می کند. Syntax: تنظیمات مربوط به نقش کاربری (user role) را پیکربندی می کند. با تعریف mapping (نگاشت) های جدید url اصلی را مخفی ساخته و یک url کاربر پسند تر بجای آن ارائه می دهد. مکان مشترک برای اسکریپت های کلاینت (client script) را فراهم می سازد. نحوه ی نگارش این sub element به شرح زیر می باشد: این sub element سرویس های وب (web service) را پیکربندی می کند.
< configSections >
< section / >
< sectionGroup / >
< remove / >
< clear/ >
< /configSections >
Application Settings
< configuration >
< appSettings >
< add key="Application Name" value="MyApplication" / >
< /appSettings >
< /configuration >
< configuration >
< appSettings >
< add key="appISBN" value="0-273-68726-3" / >
< add key="appBook" value="Corporate Finance" / >
< /appSettings >
< /configuration >
Connection Strings
< connectionStrings >
< add name="ASPDotNetStepByStepConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=E:\\projects\datacaching\ /
datacaching\App_Data\ASPDotNetStepByStep.mdb"
providerName="System.Data.OleDb" / >
< add name="booksConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\ \databinding\App_Data\books.mdb"
providerName="System.Data.OleDb" / >
< /connectionStrings >
المان System.Web
< 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 >
AnonymousIdentification
Authentication
< authentication mode="[Windows|Forms|Passport|None]" >
< forms >...< /forms >
< passport/ >
< /authentication >
Authorization
< authorization >
< allow .../ >
< deny .../ >
< /authorization >
Caching
< caching >
< cache >...< /cache >
< outputCache >...< /outputCache >
< outputCacheSettings >...< /outputCacheSettings >
< sqlCacheDependency >...< /sqlCacheDependency >
< /caching >
CustomErrors
< customErrors defaultRedirect="url" mode="On|Off|RemoteOnly" >
< error. .="" .=""/ >
< /customErrors >
Deployment
< deployment retail="true|false" / >
HostingEnvironment
< hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false"
shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" / >
Identity
< identity impersonate="true|false" userName="domain\username"
password="< secure password>"/ >
MachineKey
< 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
< membership defaultProvider="provider name"
userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1" >
< providers >...< /providers >
< /membership >
Pages
< 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
< profile enabled="true|false" inherits="fully qualified type reference"
automaticSaveEnabled="true|false" defaultProvider="provider name" >
< properties >...< /properties >
< providers >...< /providers >
< /profile >
RoleManager
< 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 >
UrlMappings
< urlMappings enabled="true|false" >
< add.../ >
< clear / >
< remove.../ >
< /urlMappings >
WebControls
< webControls clientScriptsLocation="String" / >
WebServices