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