ASP.NET應用程式的行為受組態檔案中的不同設定的影響,主要有兩個組態檔案:
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>
標記中。每個組態處理程式指定包含在檔案中的組態節的名稱,該組態節提供一些組態資料。 它具有以下基本語法:
<configSections>
<section />
<sectionGroup />
<remove />
<clear/>
</configSections>
它有以下幾點:
應用程式設定允許將應用程式範圍的名稱 - 值對儲存為唯讀存取。 例如,可以將自定義應用程式設定定義為:
<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:\\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
元素指定了ASP.NET組態部分的根元素,並包含組態ASP.NET 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>
下表提供了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
它組態金鑰以用於表單身份驗證cookie資料的加密和解密。
它還允許組態對檢視狀態資料執行訊息身份驗證檢查的驗證金鑰,並形成身份驗證票據。 基本的語法是:
<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>
SecurityPolicy
它組態安全策略。 基本的語法是:
<securityPolicy>
<trustLevel />
</securityPolicy>
UrlMappings
它定義了對映來隱藏原始URL並提供更加使用者友好的URL。 基本的語法是:
<urlMappings enabled="true|false">
<add.../>
<clear />
<remove.../>
</urlMappings>
WebControls
它提供用戶端指令碼的共用位置的名稱。 基本的語法是:
<webControls clientScriptsLocation="String" />
WebServices
這用於組態Web服務。