Asp.Net的Web.config配置的詳細說明
1. ASP.NET 2.0應用程序的標準文件
ASP.NET 2.0 使用兩個文件保存應用到 整個站點的配置信息和代碼。這兩個文件分別是 : Web.config 和 Global.asax 文件。
web.config保存 值 ;Global.asax保存代碼.
- 一、 Web.config 包含站點的配置設置;如標準的自定義錯誤頁面。
- 二、Global.asax 包含 由整個站點上任何頁面所引發的事件的 處理代碼。 如:每當用戶第一次訪問站點(一次會話的開始) 時運行的代碼。
ASP.NET 配置是一個功能強大而且容易操做的基於XML 的配置系統,該配置系統支持如下兩種配置文件:
- 一、應用程序配置 -------------web.config
一個應用程序能夠有多個,可在根目錄和子目錄
- 二、服務器配置 ----------------machine.config
該文件記錄ASPNET Web應用程序使用的默認配置。
1.1 Web.config保存整個站點設置
配置文件格式 ASP.NET 配置文件是基於 XML 的純文本文件,它能夠包含標準的 XML 文檔元素(包括格式正確的標記、註釋、文本、cdata 等等)。該文件的編碼格式能夠爲 ANSI、UTF-8 或 Unicode;系統自動檢測編碼。 (統一命名爲 web.config),可出如今 ASP.NET Web 應用程序服務器上的任何目錄中。每一個 web.config 文件將配置設置應用到它所在的目錄和它下面的全部虛擬子目錄。子目錄中的設置可隨意重寫或修改在父目錄中指定的設置。 它決定了所在目錄及其子目錄的配置信息,而且其子目錄下的配置信息要覆蓋父目錄中的配置信息。
配置文件位置
一、 整個機器的
根配置文件
WinNT\
Microsoft.NET\Framework\<version>\config\machine.config,
提供整臺計算機的缺省配置設置。
默認狀況下 ,ASP.NET 配置 IIS 阻止 瀏覽器對目錄下web.config 文件進行直接的訪問,以確保這些文件的值不能成爲公共的(試圖訪問這些文件將致使 ASP.NET 返回 403 : Access Forbidden)。
2 、
運行時,ASP.NET 會根據遠程的每一個 URL 請求 分層計算惟一的設置集合,(把訪問路徑下的全部 web.config 文件
疊加,產生一個惟一的配置集合;這些設置只計算一次,而後在後面的請求間被緩存起來;ASP.NET 自動監視文件更改,若是有任何配置文件發生更改時則使緩存無效【從新計算?】)。
1 . 一、 ~\Microsoft.NET\Framework\v.x.xx\CONFIG\web.config [缺省配置文件]
2 . 二、~\WebApp\web.config [應用程序的配置]
3. 三、 ~\WebApp\SubDir\web.config [ 本身的個性配置]
4. 四、 ……
【
注意】:若是 web.config 文件位於某個站點(如「Inetpub\wwwroot」)的根目錄下,其配置設置將應用於該站點的全部應用程序。注意,給定目錄或應用程序根中 web.config 文件的存在是徹底可選的。若是 web.config 文件不存在,該目錄的全部配置設置將自動從父目錄繼承。
<!--
- 一、Base configuration settings for machine.
- C:\WinNT\Microsoft.NET\Framework\v.1.00\config\machine.config
- 二、Overridden by the configuration settings for the site (or the root application).
- C:\inetpub\wwwroot\web.config
- 三、Overridden by application configuration settings.
- D:\MyApplication\web.config
- 四、Overridden by subdirectory configuration settings.
- D:\MyApplication\MyDir\web.config
-->
<configuration> 標記一般包含三種不一樣類型的元素,1) 配置節處理程序聲明,2) 配置節組,3) 配置節設置。
- 配置節處理程序——ASP.NET 配置結構在 web.config 文件中的文件格式或支持的設置方面不進行任何假設。相反,它將處理 web.config 數據的任務委託給配置節處理程序,即實現 IConfigurationSectionHandler 接口的 .NET 框架類。單個 IConfigurationSectionHandler 聲明只須要出現一次,一般是在 machine.config 文件中。子目錄中的 web.config 文件自動繼承此聲明。配置節處理程序經過使用嵌套在 <configSections> 標記中的節標記指令在 web.config 文件中聲明。節標記可進一步由節組標記限定,將它們組織爲邏輯組(參見下文)。每一個節標記標識一個表示特定配置數據節的標記名和一個處理該節的關聯 IConfigurationSectionHandler 類。
- 配置節組——ASP.NET 配置容許出於組織目的對節進行分層分組。<sectionGroup> 標記可顯示在 <configSections> 標記的內部或其餘 <sectionGroup> 標記的內部。例如,ASP.NET 節處理程序全都顯示在 <system.web> 節組中。
- 配置節——ASP.NET 配置設置在配置標記節中表示,同時嵌套在 <configuration> 標記(和可選的節組標記)中。對於每一個配置節,必須在 config 層次結構中定義適當的節處理程序。例如,在下面的示例中,標記 <httpModules> 是定義 HTTP 模塊配置數據的配置節。System.Configuration.HttpModulesConfigurationHandler 類負責在運行時解釋 <httpModules> 標記中包含的內容。注意,節處理程序定義和節必須具備相同的節組限定符(此處爲 <system.web>)。還應注意,標記名區分大小寫,必須按所顯示的原樣鍵入。ASP.NET 的各類屬性和設置也區分大小寫,而且配置運行時不檢查大小寫是否不匹配。
web.config 節點主要保存三個方面的信息:
- 一、在開發和部署環境下 應用程序功能可用性的 設置;
- 二、保存讀取和寫入數據庫時使用的 鏈接字符串;
- 三、保存全部其餘信息的 system.web 節(還有其餘節)等 設置
system.web設置再分幾個子類,包括一下內容
- 一、使頁面指向其餘 執行代碼的 頁面的 http模塊;
- 二、應該在編譯時開啓的調試例程;
- 三、驗證技術;
- 四、Role Manager設置 (開/關);
- 五、匿名識別設置 (容許/拒絕);
- 六、錯誤處理設置;
- 七、用於導航和菜單的 web.sitemap 文件數據;
- 八、用於識別用戶的配置數據;
- 九、簡單郵件傳送協議 的電子郵件配置 (SMTP);
- 十、識別大對象中 對象位置 的命名空間 的定義
- …
web.config 文件的修改: (三種方法)
- 一、直接在VS IDE中手動修改;
- 二、經過ASP.NET MMC管理單元【集成於IIS MMC中】,可視化配置與管理
- 二、經過 [ ASP.NET配置 ] 工具來完成;
web.config文件的結構:
- 1、 具備開始和結束標記,
- 二、每一個 都具備屬性,有時還具備子節點;
- 三、<!-- -->註釋; 這些註釋對每節設置提供建議.
- 四、全部值的列表位於 ~\config\web.config.comments 的文本文件中;
-
……
1.2 Global.asax 保存用於整個站點的代碼 ( 存代碼)
Global.asax中的代碼在三種狀況之一下執行:
- 一、整個應用程序啓動或中止時;
- 二、當每一個用戶開始或中止使用站點時;
- 三、對可能發生在每一個頁面上的 特殊事件進行響應時;
[如:用戶登陸或出現錯誤]
這些狀況中的每個 都稱爲
事件。當每個事件發生時,ASP.NET讓 Global.asax知道事件的發生,代碼會執行以響應事件。