配置Config.web
2024-07-21 02:22:02
供稿:網友
asp.net提供了一個豐富而可行的配置系統,以幫助管理人員輕松快速的建立自己的web應用環境。asp.net提供的是一個層次配置架構,可以幫助web應用、站點、機器分別配置自己的擴展配置數據。asp.net的配置系統具有以下優點:
● asp.net允許配置內容可以和靜態內容、動態頁面和商業對象放置在同一應用的目錄結構下。當管理人員需要安裝新的asp.net應用時,只需要將應用目錄拷貝到新的機器上即可。
● asp.net的配置內容以純文本方式保存,可以以任意標準的文本編輯器、xml解析器和腳本語言解釋、修改配置內容。
● asp.net 提供了擴展配置內容的架構,以支持第三方開發者配置自己的內容。
● asp.net配置文件的更修被系統自動監控,無須管理人員手工干預。
4.2.2 配置文件的規則
asp.net的配置文件是基于xml格式的純文本文件,存在于應用的各個目錄下,統一命名為“config.web”。它決定了所在目錄及其子目錄的配置信息,并且子目錄下的配置信息覆蓋其父目錄的配置。
winnt/microsoft.net/framework/版本號/下的config.web為整個機器的根配置文件,它定義了整個環境下的缺省配置。
缺省情況下,瀏覽器是不能夠直接訪問目錄下的config.web文件。
在運行狀態下,asp.net會根據遠程url請求,把訪問路徑下的各個config.web配置文件疊加,產生一個唯一的配置集合。舉例來說,一個對url: http://localhost/webapp/owndir/ test.aspx的訪問,asp.net會根據以下順序來決定最終的配置情況:
1../microsoft.net/framework/v.1.00/config.web (缺省配置文件)
2../webapp/config.web (應用的配置)
3../webapp/owndir/config.web (自己的配置)
4.2.3 配置文件的語法規則
1) 標識
配置內容被置于config.web文件中的標記<configuration>和</configuration>之間。
格式:
<configuration>
配置內容
…
</configuration>
2)配置段句柄說明
asp.net的配置文件架構并未指定任何文件格式或者是支持的配置屬性。相反的,它提出了“配置段句柄申明”的概念來支持任意的用戶定義配置段。
格式:
<configsections>
<add name=欲定義配置段名 type=處理的句柄函數 />
</configsections>
3) 配置段
具體定義配置的內容,供應用使用。
以下例子定義了一個“httpmodules”配置段,設置了系統http相關的處理模塊
<configuration>
<configsections>
<add name="httpmodules" type="system.web.configuration.httpmodules
configurationhandler" />
</configsections>
<httpmodules>
<add type="system.web.sessionstate.cookielesssessionmodule" />
<add type="system.web.caching.outputcachemodule" />
<add type="system.web.sessionstate.sessionstatemodule" />
<add type="system.web.security.windowsauthenticationmodule" />
<add type="system.web.security.cookieauthenticationmodule" />
<add type="system.web.security.passportauthenticationmodule" />
<add type="system.web.security.customauthenticationmodule" />
<add type="system.web.security.urlauthorizationmodule" />
<add type="system.web.security.fileauthorizationmodule" />
</httpmodules>
</configuration>
4.2. 4 asp.net定義的標準配置段
1) httpmodule 段: 定義了應用的http請求的處理模塊以及諸如安全、日志之類的應用方式
2) httphandlers 段: 負責映射urls到ihttphandler類
3) sessionstat 段: 負責配置http模塊的會話狀態
4) globalization 段: 配置應用的公用設置
5) compilation 段: 配置asp.net的編譯環境
6) trace 段: 配置asp.net的跟蹤服務
7) security 段: asp.net的安全配置
8) iisprocessmodel 段: 在iis上配置asp.net的處理模式
9) browercaps 段: 配置瀏覽器的兼容部件
4.2. 5 一個配置讀出的例子
1) config.web配置文件
<!--config.web 請放入formcfg.aspx所在目錄-->
<configuration>
<!--申明一個test配置段-->
<configsections>
<add name="test" type="system.web.configuration.dictionarysectionhandler" />
</configsections>
<test>
<!--配置一個鍵key,其內容為just a configure test-->
<add key="key" value="just a configure test" />
</test>
</configuration>
2) 讀出其內容
<!--文件名:application/formcfg.aspx-->
<html>
<head>
<script language="vb" runat=server>
sub page_load(s as object ,e as eventargs)
'取出test配置段的key鍵的值
dim cfgsection as hashtable = context.getconfig("test")
dim msg as string = cstr(cfgsection("key"))
lblmsg.text=msg
end sub
</script>
<title>
配置信息的讀取
</title>
</head>
<body>
<center>
config.web中"test"配置段中key的內容為:
<asp:label id=lblmsg runat=server />
</center>
</body>
</html>
3) 運行結果
4.2. 6 config.web配置實例
<configuration>
<!--定義用戶應用的公用設置,如sql的sql連接串等等-->
<appsettings>
</appsettings>
<!--設置瀏覽器的兼容性部件-->
<browsercaps>
</browsercaps>
<!--編譯環境設置,非調試模式-->
<compilation debugmode="false">
<!--缺省編譯語言為vb,以后可以不再在page中定義腳本語言-->
<compilers defaultlanguage="vb">
<!--以msvsa.dll編譯.vb為后綴的vb文件-->
<compiler language="vb" extension=".vb" type="msvsa.dll#microsoft.vb.compiler"/>
</compilers>
<assemblies>
<!--加入對system.data的引用-->
<add assembly="system.data" />
<!--去掉對system.data的引用-->
<remove assembly="system.io" />
<!--去掉config.web中包含或繼承來的引用-->
<clear />
</assemblies>
</compilation>
<!--設置應用全局環境-->
<!--文件、請求、返回以gb2312編碼,以保證瀏覽器正確顯示中文-->
<globalization fileencoding="gb2312" requestencoding="gb2312"
responseencoding="gb2312"/>
<!--定義用戶出錯的處理-->
<!--出錯缺省顯示defaultredirect指定的頁面,mode為on時,遵循customerrors配置段-->
<!--mode為off時,忽略用戶出錯,mode為remoteonly時,本地才顯示真正的出錯原因-->
<customerrors defaultredirect="anerrorhasoccured.aspx?errnum=-1" mode="remote">
<!--當出錯碼為500時,顯示redirect指定的頁面-->
<error statuscode="500" redirect="anerrorhasoccured.aspx?errnum=500"/>
</customerrors>
<!--指定目錄webapp的訪問權限-->
<location path="webapp” >
<!--非授權用戶不能進入webapp目錄-->
<security>
<authorization>
<deny users="?" />
</authorization>
</security>
</location>
<!--定義安全屬性-->
<security>
<authorization>
<!--角色為adminstrators和所有的用戶訪問其指定的資源-->
<allow roles="adminstrators"/>
<allow users="*" />
</authorization>
</security>
</configuration>