(一).Web.Config是以XML檔案規範存儲,配置檔案分為以下格式
1.配置節處理程式聲明
特點: 位于配置檔案的頂部,包含在<configSections>标志中。
2.特定應用程式配置
特點: 位于<appSetting>中。 可以定義應用程式的全局常量設定等資訊.
3.配置節設定
特點: 位于<system.Web>節中,控制Asp.net運作時的行為.
4.配置節組
特點: 用<sectionGroup>标記,可以自定義分組,可以放到<configSections>内部或其它<sectionGroup>标記的内部.
(二).配置節的每一節
1.<configuration>節
根元素,其它節都是在它的内部.
2.<appSetting>節
此節用于定義應用程式設定項。對一些不确定設定,還可以讓使用者根據自己實際情況自己設定
用法:
I.
<appSettings>
<add key="Conntction" value="server=192.168.85.66;userid=sa;password=;database=Info;"/>
定義了一個連接配接字元串常量,并且在實際應用時可以修改連接配接字元串,不用修改程式代碼.
II.
<add key="ErrPage" value="Error.aspx"/>
定義了一個錯誤重定向頁面.
3.<compilation>節
格式:
<compilation defaultLanguage="c#" debug="true" />
default language: 定義背景代碼語言,可以選擇C#和VB.net兩種語言.
II.
debug : 為true時,啟動aspx調試; 為false不啟動aspx調試,因而可以提高應用程式運作時的性能。 一般程式員在開發時設定為true,交給客戶時設定為false.
4.<customErrors>節
<customErrors mode="RemoteOnly" defaultRedirect="error.aspx"
<error statusCode="440" redirect="err440page.aspx"/>
<error statusCode="500" redirect="err500Page.aspx"/>
/>
I.
mode : 具有On,Off,RemoteOnly 3種狀态。On表示始終顯示自定義的資訊; Off表示始終顯示詳細的asp.net錯誤資訊; RemoteOnly表示隻對不在本地Web伺服器上運作的使用者顯示自定義資訊.
defaultRedirect: 用于出現錯誤時重定向的URL位址. 是可選的
III.
statusCode: 指明錯誤狀态碼,表明一種特定的出錯狀态.
IV.
redirect:錯誤重定向的URL.
5.<globalization>節
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />
requestEncoding: 它用來檢查每一個發來請求的編碼.
responseEncoding: 用于檢查發回的響應内容編碼.
fileEncoding: 用于檢查aspx,asax等檔案解析的預設編碼.
6.<sessionState>節
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
mode: 分為off,Inproc,StateServer,SqlServer幾種狀态
stateConnectionString :指定Asp.net應用程式存儲遠端會話狀态的伺服器名,預設為本機
sqlConnectionString: 當用會話狀态資料庫時,在這裡設定連接配接字元串
Cookieless: 設定為true時,表示不使用cookie會話狀态來辨別客戶; 否則,相反.
V.
TimeOut: 用來定義會話狀态存儲的時間,超過期限,将自動終止會話.
7.<authentication>節
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" protection="All" timeout="30"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
Windows: 使用IIS驗證方式
Forms: 使用基于窗體的驗證方式
Passport: 采用Passport cookie驗證模式
None: 不采用任何驗證方式
裡面内嵌Forms節點的屬性涵義:
Name: 指定完成身份驗證的Http cookie的名稱.
LoginUrl: 如果未通過驗證或逾時後重定向的頁面URL,一般為登入頁面,讓使用者重新登入
Protection: 指定 cookie資料的保護方式.
可設定為: All None Encryption Validation四種保護方式
a. All表示加密資料,并進行有效性驗證兩種方式
b. None表示不保護Cookie.
c. Encryption表示對Cookie内容進行加密
d. validation表示對Cookie内容進行有效性驗證
TimeOut: 指定Cookie的失效時間. 逾時後要重新登入.
從檔案名就可以看出是做配置用的,比如配置自定義錯誤頁面,debug,等等
存放連接配接字元串是最基本的用法,
進階一點可以配置httpmodule,httphandler...
再進階一點可以寫一個繼承自IConfigurationSectionHandler,添加自定義的配置節...
功能是很強大的
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檔案。
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>
<!--角色為Adminstrators和所有的使用者通路其指定的資源-->
<allow roles="Adminstrators"/>
<allow users="*" />
</authorization>
</security>
</configuration>