ASP.NET 配置

2018-03-19 15:32 更新

配置

一個 ASP.NET 應(yīng)用程序的行為是由以下兩個配置文件中的不同設(shè)置決定的:

  • machine.config
  • web.config

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>

Configuration Section Handler 聲明

配置節(jié)處理程序聲明是包含在 的標(biāo)簽中的,每個配置處理程序指定配置節(jié)的名稱,并包含在提供了一些配置數(shù)據(jù)的文件中。它具有以下基本語法:

    <configSections>
       <section />
       <sectionGroup />
       <remove />
       <clear/>
    </configSections>

它具有以下元素:

  • Clear - 所有涉及繼承的節(jié)和節(jié)組的引用。
  • Remove - 刪除一個繼承引用的部分和部分組。
  • Section - 定義了配置節(jié)處理程序和配置元素之間的關(guān)聯(lián)。
  • Section group - 它定義了一個配置節(jié)處理程序與配置節(jié)之間的關(guān)聯(lián)。

應(yīng)用程序設(shè)置

應(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>

系統(tǒng)的網(wǎng)絡(luò)元素

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 元素的子元素的簡要描述:

AnonymousIdentification

這是在需要用戶身份確認(rèn)時對未被認(rèn)證的用戶進行識別的。

Authentication

它是配置授權(quán)支持的,基本的語法是:

    <authorization> 
       <allow .../>
       <deny .../>
    </authorization>

Caching

它配置緩存設(shè)置,基本的語法是:

    <caching>
       <cache>...</cache>
       <outputCache>...</outputCache>
       <outputCacheSettings>...</outputCacheSettings>
       <sqlCacheDependency>...</sqlCacheDependency>
    </caching>

CustomErrors

它定義了自定義錯誤消息,基本的語法是:

    <customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">
       <error. . ./>
    </customErrors>

Deployment

它定義了用于部署的配置設(shè)置?;菊Z法如下:

    <deployment retail="true|false" />

HostingEnvironment

它為托管環(huán)境定義了配置設(shè)置?;菊Z法如下:

    <hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" 
       shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />

Identity

它用于配置對應(yīng)用程序的認(rèn)證機制,基本語法如下:

    <identity impersonate="true|false" userName="domain\username"
       password="<secure password>"/>

MachineKey

它用于配置用于加密和解密數(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]
    />

Membership

它用于配置管理和認(rèn)證用戶參數(shù)?;镜恼Z法是:

    <membership defaultProvider="provider name"
       userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1">
       <providers>...</providers>
    </membership>

Pages

它提供了網(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>

Profile

它用于配置用戶配置文件參數(shù)?;镜恼Z法是:

    <profile enabled="true|false" inherits="fully qualified type reference"
       automaticSaveEnabled="true|false" defaultProvider="provider name">

       <properties>...</properties>
       <providers>...</providers>

    </profile>

RoleManager

為用戶角色配置設(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>

SecurityPolicy

用于配置安全策略?;镜恼Z法是:

    <securityPolicy>
       <trustLevel />
    </securityPolicy>

UrlMappings

它定義了用于隱藏原始URL的映射,并提供更具用戶友好性的的 URL ?;镜恼Z法是:

    <urlMappings enabled="true|false">
       <add.../>
       <clear />
       <remove.../>
    </urlMappings>

WebControls

它提供了對客戶端腳本共享位置的名稱?;镜恼Z法是:

    <webControls clientScriptsLocation="String" />

WebServices

用于配置 Web 服務(wù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號