對于任何的WEB應用程序服務器,一個主要的要求就是具有豐富而且靈活具有柔韌性的配置系統——使開發者能夠讓“可安裝的應用程序”容易地與“設置數據”聯系,而無須將設置值置入程序代碼,而且,能使Administrators方便容易地調整、定制這些設置值 Post-deployment。 ASP+ 配置系統致力于滿足這兩個必要條件。為做到這些,它通過了一個分級的配置基礎結構,以使擴展的配置數據可以保存,而且貫穿使用在整個ASP+應用程序當中。同時,ASP+提供了豐富的初始設置集合。 ASP+配置系統提供了一下好處: 1、配置信息存儲在基于XML的配置文件當中。管理員和開發者能夠使用任何標準文本編輯器,XML解析器,或PERL腳本來解釋和更新配置設定。 2、配置信息存放在文件中,它作為應用程序的其他部分放置在與其相同的目錄樹下。這使ASP+應用程序非常容易安裝,只需使用 Xcopy 或者是 FTP。 3、配置系統易于擴展。你可以在配置系統中存放自己的配置標準以及設置。 4、對ASP+配置文件的更改由系統自動檢測,在無須用戶干涉的情況下被提交。系統管理員不需要去動系統以讓改變生效。 5、配置信息被分級提交應用。子目錄繼承或覆蓋從父目錄得來的配置設定。這就允許不同的應用程序或單個應用程序的不同部分具有不同的設定。 Config.web 配置文件 所有ASP+的配置信息都包括在名叫Config.web的配置文件當中。下面的例子說明了一個ASP+配置文件的結構:
代碼: --------------------------------------------------------------
<!-- CONFIG.WEB FILE --> <configuration> <configsections> <add names="httpmodules" type="System.Web.Config.HttpModulesConfigHandler"/> <add names="httphandlers" type="System.Web.Config.HttpHandlerConfigHandler"/> <add names="sessionstate" type="System.Web.Config.SessionStateConfigHandler"/> <add names="globalization" type="System.Web.Config.GlobalizationConfigHandler"/> <!-- ADDITIONAL CONFIGSECTION DECLARATIONS GO HERE --> </configsections> <httpmodules> <!-- http module subelements go here --> </httpmodules> <httphandlers> <!-- http handlers subelements go here --> </httphandlers> <sessionstate> <!-- session state subelements go here --> </sessionstate> <globalization> <!-- session state subelements go here --> </globalization> <!-- ADDITIONAL CONFIG SECTIONS GO HERE --> </configuration>
---------------------------------------------------------------
所有的配置信息都必須居于<configuration>和</configuration>標記之間。配置文件有兩個主要部分。在上部是配置小節的處理程序聲明(包括在<configsection>和</configsection>標記中)。文件的其余部分包括了實際的配置小節(為了清楚,它們的子元素已被移除)。注意,下面的每一個配置小節都必須對應有一個<configsection>中的聲明存在。每一個聲明賦予了配置小節名稱并且指出了將處理其配置信息的NGWS Framework Assembly及Class。每一配置小節包含含有ASP+細節配置設定的子元素。 以下代碼舉例說明了這些概念:
代碼: -----------------------------------------------------------------
<configuration> <configsections> <add name="debugmode" type="System.Web.Config.SingleTagSectionHandler" /> <add name="globalization" type="System.Web.Config.SingleTagSectionHandler" /> <add name="assemblies" type="System.Web.UI.AssembliesSectionHandler" /> <add name="security" type="System.Web.Config.SecurityConfigHandler" /> </configsections> <debugmode enable="true" /> <globalization requestencoding="us-ascii" responseencoding="iso-8859-1" /> <assemblies> <add assembly="System.Data.dll"/> <add assembly="System.dll"/> <add assembly="System.Drawing.dll"/> <add assembly="*"/> </assemblies> <security> <authorization> <allow users="*" /> <!-- Allow all users --> </authorization> </security>
</configuration>
-------------------------------------------------------------------
此例說明了一個配置文件,它包含四個配置小節——debugmode,globalization,assemblies以及security。下面是已制定的設置: *在debug小節,調試模式被打開(設置成true)。 *在globalization小節,設置了請求(Request)和回應(Response)的編碼方式。 *在assemblies小節,加入了四個assemblie。 *在security小節,所有用戶均被賦予訪問權。
層次配置體系 我們曾論及,服務器上可以有多個配置文件存在于不同的目錄中。當對一個詳細URL的請求到達時,ASP+計算該URL在層次結構風格中的設定,并為所請求的URL使用在路徑中定位的配置文件。 例如,一個站點的結構如下: Application Root |-----SubDir1 |-----SubDir2 想法是,配置應用程序的設定使所有的用戶都可以訪問應用程序根目錄(Application Root),使選中的用戶可以訪問兩個子目錄。 現在假定有一個Config.web文件在目錄SubDir1中,Application Root和SubDir2中不存在Config.web文件。在此例中實際上使用了兩個Config.web文件。最高層的Config.web文件位于 %windir%\Complus\Version 目錄,它隨NGWS SDK安裝而來,包含了默認的設定。這個文件被認為處于機器級別上,所有的ASP+目錄和子目錄都繼承了其設定。此文件的默認安全小節的設定是允許所有用戶的訪問。當例中的Application Root目錄不存在配置文件,即沒有編輯這個設定值時,所有的用戶都將允許訪問此目錄,因為此目錄繼承了機器級別配置文件的設定。如果SubDir1目錄中的Config.web文件包含了一個安全配置小節,它設定成只允許某些用戶訪問目錄,那么SubDir2目錄將繼承其設定,但是Application Root目錄并不受其影響。所以,所有的用戶可以訪問Application Root目錄,但只有某些用戶可以訪問兩個子目錄。 標準配置設定 ASP+環境自帶了一個標準的Config.web文件,它包含了一個豐富的配置設定集合。此文件位于 %windir%\ComPlus\Version 目錄。在Machine level(機器級)的配置文件中,我們可以在ASP+標準配置小節處理器下面找到標準的配置小節。 (出處:www.dev-club.com)
|