服務(wù)熱線
153 8323 9821
11.7 使用web.config配置文件
Web配置文件web.config是Web 應(yīng)用程序的數(shù)據(jù)設(shè)定文件,它是一份 XML 文件,內(nèi)含 Web 應(yīng)用程序相關(guān)設(shè)定的 XML 標(biāo)記,可以用來簡化 ASP.NET 應(yīng)用程序的相關(guān)設(shè)定。
11.7.1 Web配置文件的基礎(chǔ)
Web 配置文件web.config位于 Web 應(yīng)用程序的任何目錄中,子目錄如果沒有 web.config 文件,就是繼承父目錄 web.config 文件的相關(guān)設(shè)定;如果子目錄有 web.config 文件,就會覆蓋父目錄 web.config 文件的相關(guān)設(shè)定。
.NET Framework 根配置文件名稱是 Machine.config,存儲在 Windows 文件夾下Microsoft.NET\Framework\<version>\CONFIG,整個(gè) Web 服務(wù)器所有 Web 應(yīng)用程序的設(shè)定都是繼承此配置文件,如果需要更改設(shè)定,可使用 web.config 文件在各目錄中覆蓋相關(guān)設(shè)定。
Web 配置文件是一份 XML 文件,在 XML 標(biāo)記的屬性就是設(shè)定值,標(biāo)記名稱和屬性值格式是字符串,第 1 個(gè)開頭字母是小寫,之后每一字頭是大寫,例如<appSettings>。Web 配置文件的范例如下所示。
<configuration>
<appSettings>
<add key="dbType" value="Access Database"/>
</appSettings>
<connectionStrings>
<add name="provider"
connectionString="Microsoft.Jet.OLEDB.4.0;"/>
<add name="database"
connectionString="/Ch11/Products.mdb"/>
</connectionStrings>
<system.web>
<sessionState cookieless="false" timeout="10"/>
<globalization
fileEncoding="gb2312"
requestEncoding=" gb2312"
responseEncoding=" gb2312"
culture="zh-CN"/>
<compilation defaultLanguage="VB" debug="true"/>
<customErrors mode="RemoteOnly"/>
</system.web>
</configuration>
上述 Web 配置文件的根標(biāo)記是<configuration>,其子標(biāo)記<appSettings>、<connectionStrings>和<system.web>是各設(shè)定區(qū)段。在<system.web>下的設(shè)定區(qū)段屬于ASP.NET相關(guān)設(shè)定。常用設(shè)定區(qū)段標(biāo)記說明如表11-9所示。
表11-9 常用設(shè)定區(qū)段標(biāo)記
設(shè) 定 區(qū) 段
說 明
<anonymousIdentification>
控制 Web 應(yīng)用程序的匿名用戶,詳細(xì)說明參閱第 16 章
<authentication>
設(shè)定 ASP.NET 驗(yàn)證方式,參閱第 13 章
<authorization>
設(shè)定 ASP.NET 用戶授權(quán),參閱第 13 章
<browserCaps>
設(shè)定瀏覽程序兼容組件 HttpBrowserCapabilities
<compilation>
設(shè)定 ASP.NET 應(yīng)用程序的編譯方式
<customErrors>
設(shè)定 ASP.NET 應(yīng)用程序的自訂錯(cuò)誤處理
<globalization>
關(guān)于 ASP.NET 應(yīng)用程序的全球化設(shè)定,也就是本地化設(shè)定
<httpHandlers>
設(shè)定 HTTP 處理是對應(yīng)到 URL 請求的 IHttpHandler 類
<httpModules>
創(chuàng)建、刪除或清除 ASP.NET 應(yīng)用程序的 HTTP 模塊
<httpRuntime>
ASP.NET 的 HTTP 執(zhí)行期相關(guān)設(shè)定
<identity>
設(shè)定 ASP.NET 應(yīng)用程序的用戶識別是使用服務(wù)器端用戶賬號的權(quán)限(impersonate 屬性),或指定的用戶賬號(userName 和 password 屬性)
<machineKey>
設(shè)定在使用窗體基礎(chǔ)驗(yàn)證的 Cookie 數(shù)據(jù)時(shí),用來加碼和解碼的金鑰值
<membership>
設(shè)定 ASP.NET 的 Membership 機(jī)制,參閱第 13 章
<pages>
設(shè)定 ASP.NET 程序的相關(guān)設(shè)定,即 Page 指引命令的屬性
<profile>
設(shè)定個(gè)人化信息的 Porfile 對象,詳細(xì)說明參閱第 14 章
<roles>
設(shè)定 ASP.NET 的角色管理,詳細(xì)說明參閱第 13 章
<sessionState>
設(shè)定 ASP.NET 應(yīng)用程序的 Session 狀態(tài) HttpModule
(續(xù)表)
設(shè) 定 區(qū) 段
說 明
<siteMap>
設(shè)定 ASP.NET 網(wǎng)站導(dǎo)覽系統(tǒng),詳細(xì)說明參閱第 12 章
<trace>
ASP.NET 應(yīng)用程序的除錯(cuò)功能,可以設(shè)定是否追蹤應(yīng)用程序的執(zhí)行
<webParts>
設(shè)定ASP.NET應(yīng)用程序的網(wǎng)頁組件,詳細(xì)說明參閱第18章
<webServices>
設(shè)定 ASP.NET 的 Web 服務(wù),詳細(xì)說明參閱第 18 章
11.7.2 appSetting與connectionStrings區(qū)段的參數(shù)和連接字符串
在 Web 配置文件的 <appSettings> 區(qū)段可以創(chuàng)建 ASP.NET 程序所需的參數(shù),ASP.NET 2.0 新增 <connectionStrings> 區(qū)段,可以指定數(shù)據(jù)庫連接字符串。
1. Web配置文件web.config的內(nèi)容
在web.config文件<configuration>標(biāo)記的子標(biāo)記<appSettings> 和 <connectionStrings> 區(qū)段中,可以創(chuàng)建參數(shù)和數(shù)據(jù)庫連接字符串,如下所示。
<configuration>
<appSettings>
<add key="dbType" value="Access Database"/>
</appSettings>
<connectionStrings>
<add name="provider"
connectionString="Microsoft.Jet.OLEDB.4.0;"/>
<add name="database"
connectionString="/Ch11/Products.mdb"/>
</connectionStrings>
<system.web>
………
</system.web>
</configuration>
上述 <appSettings> 標(biāo)記的子標(biāo)記是創(chuàng)建參數(shù),每一個(gè) <add> 標(biāo)記可以創(chuàng)建一個(gè)參數(shù),屬性 key 是參數(shù)名稱,value 是參數(shù)值。
在 <connectionStrings> 標(biāo)記的 <add> 子標(biāo)記也可以創(chuàng)建連接字符串,屬性 name 是名稱,connectionString 屬性是連接字符串內(nèi)容。
2. Conifguration API的基礎(chǔ)
ASP.NET 2.0 的 Configuration API 可以存取 web.config 和 machine.config 配置文件的設(shè)定數(shù)據(jù)。在ASP.NET 程序中是使用 System.Web.Configuration 名稱空間的 WebConfigurationManager 類來存取相關(guān)設(shè)定。首先導(dǎo)入所需的名稱空間,如下所示。
<%@ Import NameSpace="System.Web.Configuration" %>
上述 Import命令導(dǎo)入 System.Web.Configuration 名稱空間,接著就可以獲取 <appSettings> 區(qū)段創(chuàng)建的參數(shù),如下所示。
Dim dbType As String = WebConfigurationManager.AppSettings("dbType")
上述程序代碼使用AppSettings屬性獲取指定參數(shù),使用的是<add>標(biāo)記的key 屬性。同樣可以獲取<connectionStrings>區(qū)段的數(shù)據(jù)庫連接字符串,如下所示。
Dim pd, db As String
pd = WebConfigurationManager.ConnectionStrings( _
"provider").ConnectionString
db = WebConfigurationManager.ConnectionStrings( _
"database").ConnectionString
上述程序代碼使用 ConnectionStrings 屬性獲取參數(shù) provider 和 database 的值,即 <add> 標(biāo)記的 name 屬性。完整 ASP.NET 程序范例是 Ch11-7-2.aspx,其執(zhí)行結(jié)果使用表格顯示數(shù)據(jù)表記錄,如圖11-12所示。
圖11-12 Ch11-7-2.aspx運(yùn)行結(jié)果
上圖的Access Database是<appSettings>區(qū)段的應(yīng)用程序參數(shù),數(shù)據(jù)表是使用 GridView控件來顯示記錄數(shù)據(jù),數(shù)據(jù)庫連接字符串是定義在web.config 文件。
11.7.3 在sessionState區(qū)段設(shè)定Session狀態(tài)
ASP.NET的Session狀態(tài)管理擁有擴(kuò)充性,可以在web.config文件的 <sessionState>區(qū)段設(shè)定Session狀態(tài)管理,它屬于<system.web>
上一篇:web.config文件詳解