WebConfig 詳解

1、Web.Config繼承特性html

首先咱們就來看看配置文件的繼承層次。都知道在ASP.NET中有不少的配置文件,如machine.config,web.config,特別是web.config出如今不少的地方,出如今不一樣的地方做用也不同。並且咱們還知道machine.config中的配置對服務器上全部ASP.NET網站起做用,而web.config中的配置就依據它所在的位置而定,如在一個網站根目錄中的web.config就對整個網站起做用,在一個網站中的某個文件夾中的web.config就只對該文件夾起做用,並且網站跟目錄中的web.config中的配置也對這個文件夾起做用。這就反映出了另一個事實:配置文件是有繼承層次的. 換個角度,對於一個網站中的某個文件夾,它不只僅只是受本文件夾中web.config的配置約束,並且還收到本網站中根目錄下的web.config的約束,並且還受到本臺服務器上的machine.config的約束。<br />web

下面咱們就來具體的看看ASP.NET中的配置文件的繼承層次:

1.machine.confiig-在ASP.NET中,不少的默認的配置都是定義在這個配置文件中的,可是有一些配置已經從machine.config中移出到別的地方了,爲了縮短ASP.NET的加載時間。咱們知道在運行一個ASP.NET程序的時候,ASP.NET運行時是要加載不少的配置文件的,固然machine.config是必定要加載的,可是其中有些配置不是必須的,因此就移到別的地方,若是用到就加載。json


2.在安裝根目錄中的web.config-在%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG中的配置文件,以前說過machine.config把不少的配置移出了,就放在這個配置中。

3.在根目錄中的web.config-咱們也能夠把web.config放在根目錄中,讓它對整個根目錄起做用。如:c:\inetpub\wwwroot.由於咱們能夠新建不少的虛擬目錄文件夾,文件夾中有網站程序,若是把配置文件放在虛擬目錄中,那麼配置就對整個文件夾中的網站起做用。瀏覽器

4.一個網站中的web.config-這是咱們最多見的配置地方。

5.網站中的某個文件夾中的web.config-咱們經常經過這個配置文件來限制對文件的訪問權限。服務器

繼承機構圖
cookie

2、Web.Config結構說明session

當建立一個ASP.NET項目時,默認狀況下會在根目錄自動建立一個默認的 Web.config文件,包括默認的配置設置,全部的子目錄都繼承它的配置設置。若是你想修改子目錄的配置設置,你能夠在該子目錄下新建一個Web.config文件。它能夠提供除從父目錄繼承的配置信息之外的配置信息,也能夠重寫或修改父目錄中定義的設置。Web.config文件是按照XML的格式定義的,因此必須嚴格遵照XML格式。app

      全部配置信息都駐留在 <configuration> 和 </configuration> 根 XML 標記之間。標記間的配置信息分爲兩個主區域:配置節處理程序聲明區域和配置節設置區域。less

配置節處理程序聲明出如今配置文件頂部 <configSections> 和 </configSections> 標記之間,配置節聲明使用<section>節,如:ide

     <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" />

     配置節也支持嵌套,外層的配置節使用<sectionGroup>,內層的使用<section>,如:

      <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
                <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
                <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      </sectionGroup>

     配置節設置區域位於 <configSections> 區域以後,它包含實際的配置設置,如:

     <dataConfiguration defaultDatabase="DefaultConnection" />

      全部的配置節都必須遵照先聲明後使用的原則,否則編譯程序時會報錯。

      有人可能會疑問,爲何Web.config中默認生成的配置節沒看到聲明就直接用呢?好比<connectionStrings>和<appSettings>。這是由於這些節的聲明是在Windows\Microsoft .NET\Framework\versionNumber\CONFIG\Machine.config中完成的,Machine.config 文件用於服務器級的配置設置,Web.config文件繼承 Machine.config 文件中的全部設置。

 

3、WebConfig幾點配置說明

如下全部的代碼都應該位於

<configuration> 

<system.web> 

</system.web> 

</configuration> 

之間,出於學習的目的下面的示例都省略了這段XML標記 

一、<authentication> 節

做用:配置 ASP.NET 身份驗證支持(爲Windows、Forms、PassPort、None四種)。該元素只能在計算機、站點或應用程序級別聲明。<authentication> 元素必需與<authorization> 節配合使用。

示例:

如下示例爲基於窗體(Forms)的身份驗證配置站點,當沒有登錄的用戶訪問須要身份驗證的網頁,網頁自動跳轉到登錄網頁。 

  1. <authentication mode="Forms" >   
  2. <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>   
  3. </authentication>   

其中元素loginUrl表示登錄網頁的名稱,name表示Cookie名稱

二、<authorization> 節

做用:控制對 URL 資源的客戶端訪問(如容許匿名用戶訪問)。此元素能夠在任何級別(計算機、站點、應用程序、子目錄或頁)上聲明。必需與<authentication> 節配合使用。

示例:如下示例禁止匿名用戶的訪問

  1. <authorization>   
  2. <deny users="?"/>   
  3. </authorization> 

注:你可使用user.identity.name來獲取已通過驗證的當前的用戶名;可使用web.Security.FormsAuthentication.RedirectFromLoginPage方法將已驗證的用戶重定向到用戶剛纔請求的頁面.

三、<compilation>節

做用:配置 ASP.NET 使用的全部編譯設置。默認的debug屬性爲「True」.在程序編譯完成交付使用以後應將其設爲 True(Web.config文件中有詳細說明,此處省略示例)

四、<customErrors>

做用:爲 ASP.NET 應用程序提供有關自定義錯誤信息的信息。它不適用於 XML Web services 中發生的錯誤。

示例:當發生錯誤時,將網頁跳轉到自定義的錯誤頁面。

  1. <customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">   
  2. </customErrors> 

其中元素defaultRedirect表示自定義的錯誤網頁的名稱。mode元素表示:對不在本地 Web 服務器上運行的用戶顯示自定義(友好的)信息。 

五、<httpRuntime>節

做用:配置 ASP.NET HTTP 運行庫設置。該節能夠在計算機、站點、應用程序和子目錄級別聲明。

示例:控制用戶上傳文件最大爲4M,最長時間爲60秒,最多請求數爲100 

  1. <httpRuntime maxRequestLength="4096" executi appRequestQueueLimit="100"/>  

六、 <pages>

做用:標識特定於頁的配置設置(如是否啓用會話狀態、視圖狀態,是否檢測用戶的輸入等)。<pages>能夠在計算機、站點、應用程序和子目錄級別聲明。

示例:不檢測用戶在瀏覽器輸入的內容中是否存在潛在的危險數據(注:該項默認是檢測,若是你使用了不檢測,一要對用戶的輸入進行編碼或驗證),在從客戶端回發頁時將檢查加密的視圖狀態,以驗證視圖狀態是否已在客戶端被篡改。(注:該項默認是不驗證)

  1. <pages buffer="true" enableViewStateMac="true" validateRequest="false"/>  

七、<sessionState>

做用:爲當前應用程序配置會話狀態設置(如設置是否啓用會話狀態,會話狀態保存位置)。

示例:

  1. <sessionState mode="InProc" cookieless="true" timeout="20"/>   
  2. </sessionState> 

注:

mode="InProc"表示:在本地儲存會話狀態(你也能夠選擇儲存在遠程服務器或SAL服務器中或不啓用會話狀態)

cookieless="true"表示:若是用戶瀏覽器不支持Cookie時啓用會話狀態(默認爲False)

timeout="20"表示:會話能夠處於空閒狀態的分鐘數

八、<trace>

做用:配置 ASP.NET 跟蹤服務,主要用來程序測試判斷哪裏出錯。

示例:如下爲Web.config中的默認配置:

  1. <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />  

注:

enabled="false"表示不啓用跟蹤;requestLimit="10"表示指定在服務器上存儲的跟蹤請求的數目

pageOutput="false"表示只能經過跟蹤實用工具訪問跟蹤輸出;

traceMode="SortByTime"表示以處理跟蹤的順序來顯示跟蹤信息

localOnly="true" 表示跟蹤查看器 (trace.axd) 只用於宿主 Web 服務器

 

參考:WebConfig

相關文章
相關標籤/搜索