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.config文件將configuration元素作爲根節點。此元素中的信息分爲兩個主要區域:配置節處理程序聲明區域和配置節設置區域。
以下代碼段顯示了配置文件的基本語法:
<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>
Configuration Section Handler declarations
該配置截面手柄在配置<>標籤內容納。每一個配置手柄特徵的名稱,包含在文件內,提供一些配置數據。下面是基本語法:
<configSections> <section /> <sectionGroup /> <remove /> <clear/> </configSections>
它具有以下要素:
清除-刪除對繼承節和節組的所有引用。
刪除-它刪除對繼承的節和節組的引用。
節-它定義配置節處理程序和配置元素之間的關聯。
節組-它定義配置節處理程序和配置節之間的關聯。
Application Settings
應用程式設置允許存儲應用程式範圍的名稱-值對以進行只讀訪問。例如,可以將自定義應用程式設置定義爲:
<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>
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 Element
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服務。