一個ASP.NET 應用程式的行為是由以下兩個設定檔中的不同設定決定的:
machine.config
web.config
machine.config 檔案包含所有支援設定項目的預設和設定機器的特定值。機器的設定是由系統管理員,應用程式通常不能存取這個檔案。
然而,一個應用程序,可以透過在它的根資料夾中建立web.config 檔案覆蓋預設值。 web.config 檔案是machine.config 檔案的子集。
如果應用程式包含子目錄,那麼它可以為每個資料夾定義一個web.config 檔案。每個設定檔的範圍是用一個分層的自上而下的方式來決定。
任何web.config 檔案都可以在本機擴展,限制,或重寫任何設定在上層的定義。
Visual Studio 會為每個專案產生預設的web.config 檔案。應用程式可以在沒有web.config 檔案的情況下執行,然而,我們不能除錯一個沒有web.config 檔案的應用程式。
下圖顯示的是用於web 服務教學中的解決方案資源管理器為樣本的範例:
在這種應用中,存在兩個web.config 檔案分別對應於呼叫web 服務的web 服務和web 站點。
web.config 檔案中的配置元素是作為根節點的。此元素中的資訊分為兩個主要領域:配置節處理程序聲明區域,和配置節設定區域。
下面的程式碼片段顯示了一個設定檔的基本語法:
<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 >
配置節處理程序聲明是包含在 的標籤中的,每個配置處理程序指定配置節的名稱,並包含在提供了一些配置資料的檔案中。它具有以下基本語法:
<configSections> <section /> <sectionGroup /> <remove /> <clear/> </configSections>
它具有以下元素:
Clear - 所有涉及繼承的節和節組的引用。
Remove - 刪除一個繼承引用的部分和部分群組。
Section - 定義了配置節處理程序和配置元素之間的關聯。
Section group - 它定義了一個設定節處理程序與設定節之間的關聯。
應用程式設定允許儲存唯讀存取的應用程式的名稱-數值對。例如,你可以定義一個自訂應用程式設定如下:
<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>
連接字串展示的是可用於網站的資料庫連接字串。例如:
<connectionStrings> <add name="ASPDotNetStepByStepConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=E:\projectsdatacaching / 數據編號OleDb" /> <add name="booksConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C: databindingApp_Databooks.mdb" providerName="System.Data.OleDb" /> </connectionStrings>
system.web 元素為ASP.NET 配置節指定了根元素,並且包含了配置ASP.NET Web 應用程式和控制應用程式運作的配置元素。
它控制大多數比較常見的需要調整的配置元素。該元素的基本語法如下:
<system.web> <anonymousIdentification> <authentication> <authorization> <browserCaps> <caching> <clientTarget> <compilation> <customErrors> <deployment> <deviceFilters> <globalization> <healthMonitoring> <deployment> <deviceFilters> <globalization> <..>5>> <httpModules> <httpRuntime> <identity> <machineKey> <membership> <mobileControls> <pages> <processModel> <profile> <roleManager> <securityPolicy> <sessionPageState> <sessionState> <siteMap> <trace> <trust> <urlMappings> <webControls> <webControls> <webControls> <webControls> <webControls> <webControls> <webControls> <webControls> > <webServices> <xhtmlConformance> </system.web>
下表提供了一些常用的system.web元素的子元素的簡要描述:
這是在需要用戶身份確認時對未被認證的用戶進行識別的。
它是配置授權支援的,基本的語法是:
<authorization> <allow .../> <deny .../> </authorization>
它配置快取設置,基本的語法是:
<caching> <cache>...</cache> <outputCache>...</outputCache> <outputCacheSettings>...</outputCacheSettings> <sqlCacheDependency>...</sqlCacheDependency> </caching>
它定義了自訂錯誤訊息,基本的語法是:
<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly"> <error. . ./> </customErrors>
它定義了用於部署的配置設定。基本語法如下:
<deployment retail="true|false" />
它為託管環境定義了配置設定。基本語法如下:
<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />
它用於配置對應用程式的認證機制,基本語法如下:
<identity impersonate="true|false" userName="domainusername" password="<secure password>"/>
它用於配置用於加密和解密資料的表單驗證Cookie 的金鑰。
它還允許配置驗證金鑰對視圖狀態資料和Forms 身份驗證票證執行訊息認證檢查。基本的語法是:
<machineKey validationKey="AutoGenerate,IsolateApps" [String] decryptionKey="AutoGenerate,IsolateApps" [String] validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMAC384 | " [Auto | DES | 3DES | AES | alg:algorithm_name] />
它用於配置管理和認證用戶參數。基本的語法是:
<membership defaultProvider="provider name" userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1"> <providers>...</providers> </membership>
它提供了網頁的具體配置。基本的語法是:
<pages asyncTimeout="number" autoEventWireup="[True|False]" buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]" compilationMode="[Always|Auto|Never]" controlRendering="CompatibilityVersion=" [3.5|4.0]" enableEventValidation="[True|False]" enableSessionState="[True|False|ReadOnly]" enableViewState="[True|False]" enableViewStateMac="[True|False]" maintainScrollPositionOnPostBack="[True|False]" masterPageFile="ScrollPositionOnPostBack="[True|False]" masterPageFile="fileScrollPositionOnPostBack="[True|False]" masterPageFile="files path"dPostBack="[True|False]" masterPageFile="filesfilepathPage="False path ="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 enabled="true|false" inherits="fully qualified type reference" automaticSaveEnabled="true|false" defaultProvider="provider name"> <properties>...</properties> <providers>...</providers > </profile>
為使用者角色配置設定資訊。基本的語法是:
<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> <trustLevel /> </securityPolicy>
它定義了用於隱藏原始URL的映射,並提供更具用戶友好性的URL 。基本的語法是:
<urlMappings enabled="true|false"> <add.../> <clear /> <remove.../> </urlMappings>
它提供了對客戶端腳本共享位置的名稱。基本的語法是:
<webControls clientScriptsLocation="String" />
用於設定Web 服務。