配置
一個(gè) ASP.NET 應(yīng)用程序的行為是由以下兩個(gè)配置文件中的不同設(shè)置決定的:
- machine.config
- web.config
machine.config 文件包含所有支持設(shè)置項(xiàng)的默認(rèn)和設(shè)置機(jī)器的具體值。機(jī)器的設(shè)置是由系統(tǒng)管理員,且應(yīng)用程序通常不能訪問(wèn)這個(gè)文件。
然而,一個(gè)應(yīng)用程序,可以通過(guò)在它的根文件夾中創(chuàng)建 web.config 文件覆蓋默認(rèn)值。web.config 文件是 machine.config 文件的一個(gè)子集。
如果應(yīng)用程序包含子目錄,那么它可以為每個(gè)文件夾定義一個(gè) web.config 文件。每個(gè)配置文件的范圍是用一個(gè)分層的自上而下的方式確定。
任何 web.config 文件都可以在本地?cái)U(kuò)展,限制,或重寫(xiě)任何設(shè)置在上層的定義。
Visual Studio 會(huì)為每個(gè)項(xiàng)目生成默認(rèn)的 web.config 文件。應(yīng)用程序可以在沒(méi)有 web.config 文件的情況下執(zhí)行,然而,我們不能調(diào)試一個(gè)沒(méi)有 web.config 文件的應(yīng)用程序。
下圖顯示的是用于 web 服務(wù)教程中的解決方案資源管理器為樣本的例子:
Configuration Section Handler 聲明
配置節(jié)處理程序聲明是包含在 的標(biāo)簽中的,每個(gè)配置處理程序指定配置節(jié)的名稱,并包含在提供了一些配置數(shù)據(jù)的文件中。它具有以下基本語(yǔ)法:
<configSections> <section /> <sectionGroup /> <remove /> <clear/> </configSections>它具有以下元素:
- Clear – 所有涉及繼承的節(jié)和節(jié)組的引用。
- Remove – 刪除一個(gè)繼承引用的部分和部分組。
- Section – 定義了配置節(jié)處理程序和配置元素之間的關(guān)聯(lián)。
- Section group – 它定義了一個(gè)配置節(jié)處理程序與配置節(jié)之間的關(guān)聯(lián)。
應(yīng)用程序設(shè)置
應(yīng)用程序設(shè)置允許存儲(chǔ)只讀訪問(wèn)的應(yīng)用程序的名稱-數(shù)值對(duì)。例如,你可以定義一個(gè)自定義應(yīng)用程序設(shè)置如下:
<configuration> <appSettings> <add key="Application Name" value="MyApplication" /> </appSettings> </configuration>例如,你還可存儲(chǔ)一本書(shū)的 ISBN 號(hào)和名字?jǐn)?shù)據(jù)對(duì):
<configuration> <appSettings> <add key="appISBN" value="0-273-68726-3" /> <add key="appBook" value="Corporate Finance" /> </appSettings> </configuration>連接字符串
連接字符串展示的是可用于網(wǎng)站的數(shù)據(jù)庫(kù)連接字符串。例如:
<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_Dataooks.mdb" providerName="System.Data.OleDb" /> </connectionStrings>系統(tǒng)的網(wǎng)絡(luò)元素
system.web 元素為 ASP.NET 配置節(jié)指定了根元素,并且包含了配置 ASP.NET Web 應(yīng)用程序和控制應(yīng)用程序運(yùn)轉(zhuǎn)的配置元素。
它控制大多數(shù)比較常見(jiàn)的需要調(diào)整的配置元素。該元素的基本語(yǔ)法如下:
<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>下表提供了一些常用的 system.web 元素的子元素的簡(jiǎn)要描述:
AnonymousIdentification
這是在需要用戶身份確認(rèn)時(shí)對(duì)未被認(rèn)證的用戶進(jìn)行識(shí)別的。
Authentication
它是配置授權(quán)支持的,基本的語(yǔ)法是:
<authorization> <allow .../> <deny .../> </authorization>Caching
它配置緩存設(shè)置,基本的語(yǔ)法是:
<caching> <cache>...</cache> <outputCache>...</outputCache> <outputCacheSettings>...</outputCacheSettings> <sqlCacheDependency>...</sqlCacheDependency> </caching>CustomErrors
它定義了自定義錯(cuò)誤消息,基本的語(yǔ)法是:
<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly"> <error. . ./> </customErrors>Deployment
它定義了用于部署的配置設(shè)置。基本語(yǔ)法如下:
<deployment retail="true|false" />HostingEnvironment
它為托管環(huán)境定義了配置設(shè)置。基本語(yǔ)法如下:
<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />Identity
它用于配置對(duì)應(yīng)用程序的認(rèn)證機(jī)制,基本語(yǔ)法如下:
<identity impersonate="true|false" userName="domainusername" password="<secure password>"/>MachineKey
它用于配置用于加密和解密數(shù)據(jù)的表單驗(yàn)證 Cookie 的密鑰。
它還允許配置驗(yàn)證密鑰對(duì)視圖狀態(tài)數(shù)據(jù)和 Forms 身份驗(yàn)證票證執(zhí)行消息認(rèn)證檢查。基本的語(yǔ)法是:
<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
它用于配置管理和認(rèn)證用戶參數(shù)。基本的語(yǔ)法是:
<membership defaultProvider="provider name" userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1"> <providers>...</providers> </membership>Pages
它提供了網(wǎng)頁(yè)的具體配置。基本的語(yǔ)法是:
<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
它用于配置用戶配置文件參數(shù)。基本的語(yǔ)法是:
<profile enabled="true|false" inherits="fully qualified type reference" automaticSaveEnabled="true|false" defaultProvider="provider name"> <properties>...</properties> <providers>...</providers> </profile>RoleManager
為用戶角色配置設(shè)置信息。基本的語(yǔ)法是:
<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
用于配置安全策略。基本的語(yǔ)法是:
<securityPolicy> <trustLevel /> </securityPolicy>UrlMappings
它定義了用于隱藏原始URL的映射,并提供更具用戶友好性的的 URL 。基本的語(yǔ)法是:
<urlMappings enabled="true|false"> <add.../> <clear /> <remove.../> </urlMappings>WebControls
它提供了對(duì)客戶端腳本共享位置的名稱。基本的語(yǔ)法是:
<webControls clientScriptsLocation="String" />WebServices
用于配置 Web 服務(wù)。