時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)
web.config是asp.net中保存配置信息(比如數(shù)據(jù)庫(kù)連接字符串等)的重要文件。它是基于xml的文本文件方式放在Web應(yīng)用程序的任何目錄中,并且默認(rèn)不隨源文件編譯到Dll中,而運(yùn)行環(huán)境隨時(shí)監(jiān)視著它是否有改變,一但有變動(dòng),系統(tǒng)會(huì)自動(dòng)重新加載里面的最新內(nèi)容。
一、 配置文件保存位置
.net的默認(rèn)配置文件保存在"windows目錄\Microsoft.NET\Framework\對(duì)應(yīng).net版本\config"文件夾下面。不同的操作系統(tǒng)windows目錄不一樣,我們?cè)诿钚邢螺斎?echo %windir%"查看windows目錄所在的位置。
圖:web.config所在的目錄
Asp.net中有兩個(gè)非常重要的配置文件,分別是machine.config和web.config,它們都位于config文件夾下面。這兩個(gè)文件一般不需要我們手工是維護(hù)它,保持默認(rèn)即可。但針對(duì)asp.net應(yīng)用程序,它自身會(huì)有0個(gè),1個(gè)或者多個(gè)web.config配置文件,多個(gè)配置文件會(huì)存在加載順序問(wèn)題。下節(jié)會(huì)介紹。
注意,傳說(shuō)中.net3.0和.net3.5只是在.net2.0的基礎(chǔ)上擴(kuò)充中,所以還是沒用的.net2.0的配置文件。它們連config這個(gè)目錄都沒有。
二、 配置文件加載順序
IIS在Asp.net網(wǎng)站啟動(dòng)時(shí),會(huì)加載配置文件中的配置信息,然后緩存這些信息,不會(huì)每次要用都去讀取配置文件,只是IIS會(huì)隨時(shí)監(jiān)視著這些文件的變化,一量有變化,它會(huì)重新去讀取并緩存配置信息。
Asp.net網(wǎng)站運(yùn)行時(shí)會(huì)按照以下方式加載配置文件中的節(jié)點(diǎn)信息:
1) 如果在當(dāng)前運(yùn)行頁(yè)面所在的目錄下有web.config文件,則查找是否存在所需要的節(jié)點(diǎn),如果存在則返回結(jié)果,并停止下一步地查找。
2) 如里所在目錄不存在web.config配置或者配置文件里沒有所需要的節(jié)點(diǎn),則查找它所在的上一級(jí)目錄的配置文件中的節(jié)點(diǎn),直到網(wǎng)站根目錄。(問(wèn)題:IIS6中的虛擬目錄算不算根目錄)
3) 如果網(wǎng)站根目錄中都不存在web.config或者所需要的配置節(jié)點(diǎn),轉(zhuǎn)而到"windows目錄\Microsoft.NET\Framework\對(duì)應(yīng).net版本\config\web.config"中去查找。
4) 如果第3條中還沒找到,繼續(xù)到"windows目錄\Microsoft.NET\Framework\對(duì)應(yīng).net版本\config\machine.config"中去查找。
5) 如果還沒找到,那就報(bào)錯(cuò)吧。
存在兩個(gè)問(wèn)題
1) IIS6中的虛擬目錄算不算根目錄。
2) 在系統(tǒng)運(yùn)行時(shí),在一個(gè)原本沒有web.config的目錄中手工加上一個(gè)web.config,會(huì)不會(huì)自動(dòng)加載。
三、 配置文件節(jié)點(diǎn)介紹
Web.config文件是一個(gè)xml文本文件,它的根節(jié)點(diǎn)為
1.
configSections 元素指定了配置節(jié)和處理程序聲明。由于 ASP.NET 不對(duì)如何處理配置文件內(nèi)的設(shè)置作任何假設(shè),因此這非常必要。但 ASP.NET 會(huì)將配置數(shù)據(jù)的處理委托給配置節(jié)處理程序。配置結(jié)構(gòu)信息如下:
每個(gè) section 元素標(biāo)識(shí)一個(gè)配置節(jié)或元素以及對(duì)該配置節(jié)或元素進(jìn)行處理的關(guān)聯(lián) ConfigurationSection 派生類??梢栽?sectionGroup 元素中對(duì) section 元素進(jìn)行邏輯分組,以對(duì) section 元素進(jìn)行組織并避免命名沖突。section 和 sectionGroup 元素包含在 configSections 元素中。
如果配置文件中包含 configSections 元素,則 configSections 元素必須是 configuration 元素的第一個(gè)子元素。
下面我們來(lái)示例寫一個(gè)自定義配置信息,并完成它的SectionHandler,首先我們?cè)?configuration>節(jié)點(diǎn)下添加configSections。
type="ConfigTest.SectionHandler.MySectionHandler,ConfigTest.SectionHandler" />
編寫自定義SectionHandler,我們?yōu)镸ySectionHandler返回一個(gè)Hashtable的數(shù)據(jù)。
namespace ConfigTest.SectionHandler
{
public class MySectionHandler : IConfigurationSectionHandler
{
public object Create(object parent, object configContext, System.Xml.XmlNode section)
{
Hashtable ht = new Hashtable();
foreach (XmlNode node in section.ChildNodes)
{
if (node.Name == "add")
{
ht.Add(node.Attributes["key"].Value, node.Attributes["value"].Value);
}
}
return ht;
}
}
}
在頁(yè)面中使用該Section,由ConfigurationManager.GetSection得到SectionHandler返回的Hashtable。注意參數(shù)結(jié)構(gòu)。
protected void Page_Load(object sender, EventArgs e)
{
Hashtable ht = ConfigurationManager.GetSection("mySectionGroup/mySection") as Hashtable;
foreach (DictionaryEntry de in ht)
{
Response.Write(de.Key + " - " + de.Value + "
");
}
}
2.
該節(jié)點(diǎn)下主要用來(lái)存儲(chǔ)asp.net應(yīng)用程序的一些配置信息,也可以把數(shù)據(jù)庫(kù)連接字符串也放在這里,不過(guò).net2.0提供了connectionStrings節(jié)點(diǎn),所以數(shù)據(jù)庫(kù)連接字符串還是不建議放在這里,下面為一個(gè)圖片類型的實(shí)例。
調(diào)用方法為:
string ImgType = ConfigurationManager.AppSettings["ImgType"];
3.
connectionStrings和appSettings類似,不過(guò)用于保存配置數(shù)據(jù)庫(kù)連接信息,下面給一個(gè)實(shí)例。
調(diào)用方式為:
string connStr = ConfigurationManager.ConnectionStrings["SqlserverConnStr"].ConnectionString;
4.
?
其中mode屬性有三種值,On/Off/RemoteOnly,默認(rèn)為Rem
關(guān)鍵詞標(biāo)簽:Asp.net
相關(guān)閱讀
熱門文章 誅仙3飛升任務(wù)怎么做-誅仙3飛升任務(wù)流程最新2022 鐘離圣遺物推薦-原神鐘離圣遺物詞條 解決方法:應(yīng)用程序“DEFAULT WEB SITE”中的服務(wù)器錯(cuò)誤 使用aspnet_regiis.exe 重新注冊(cè).NET Framework
人氣排行 誅仙3飛升任務(wù)怎么做-誅仙3飛升任務(wù)流程最新2022 asp.net表單提交方法GET\POST 在ASP.NET中如何判斷用戶IE瀏覽器的版本 Asp.net中messagebox的實(shí)現(xiàn)方法 Asp.net中的web.config配置 在ASP.NET MVC中實(shí)現(xiàn)大文件異步上傳 asp.net獲取URL和IP地址 FileUpload上傳多文件出現(xiàn)錯(cuò)誤的解決方法