国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - asp.net 讀取配置文件方法

asp.net 讀取配置文件方法

2019-09-24 10:53asp.net教程網(wǎng) ASP.NET教程

asp.net 讀取配置文件方法,需要的朋友可以參考下。

方法1: 

復(fù)制代碼代碼如下:


System.Collections.Specialized.NameValueCollection nvc = (System.Collections.Specialized.NameValueCollection) 
System.Configuration.ConfigurationManager.GetSection(sectionName); 


string keyValue = nvc.GetValues(keyName)[0].ToString(); 
方法2: 

復(fù)制代碼代碼如下:

System.Web.Configuration.WebConfigurationManager.AppSettings[keyName].ToString();


參考下面的文章

在C#中如何讀取配置文件 
1. 配置文件概述: 
應(yīng) 用程序配置文件是標(biāo)準(zhǔn)的 XML 文件,XML 標(biāo)記和屬性是區(qū)分大小寫的。它是可以按需要更改的,開發(fā)人員可以使用配置文件來更改設(shè)置,而不必重編譯應(yīng)用程序。配置文件的根節(jié)點(diǎn)是 configuration。我們經(jīng)常訪問的是appSettings,它是由.Net預(yù)定義配置節(jié)。我們經(jīng)常使用的配置文件的架構(gòu)是象下面的形式。先大 概有個(gè)印象,通過后面的實(shí)例會(huì)有一個(gè)比較清楚的認(rèn)識。下面的“配置節(jié)”可以理解為進(jìn)行配置一個(gè)XML的節(jié)點(diǎn)。 
常見配置文件模式: 

復(fù)制代碼代碼如下:


<configuration> 
<configSections> //配置節(jié)聲明區(qū)域,包含配置節(jié)和命名空間聲明 
<section> //配置節(jié)聲明 
  <sectionGroup> //定義配置節(jié)組 
   <section> //配置節(jié)組中的配置節(jié)聲明 
<appSettings> //預(yù)定義配置節(jié) 
<Custom element for configuration section> //配置節(jié)設(shè)置區(qū)域 


2. 只有appSettings節(jié)的配置文件及訪問方法 
下面是一個(gè)最常見的應(yīng)用程序配置文件的例子,只有appSettings節(jié)。 

復(fù)制代碼代碼如下:


<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<appSettings> 
<add key="connectionstring" value="User ID=sa;Data Source=.;Password=;Initial Catalog=test;Provider=SQLOLEDB.1;" /> 
<add key="TemplatePATH" value="Template" /> 
</appSettings> 
</configuration> 


下面來看看這樣的配置文件如何方法。 
string _connectionString=ConfigurationSettings.AppSettings["connectionstring"]; 
使用ConfigurationSettings類的靜態(tài)屬性AppSettings就可以直接方法配置文件中的配置信息。這個(gè)屬性的類型是NameValueCollection。 
3. 自定義配置文件 
3.1 自定義配置節(jié) 
一個(gè)用戶自定義的配置節(jié),在配置文件中分為兩部分:一是在<configSections></ configSections>配置節(jié)中聲明配置節(jié)(上面配置文件模式中的“<section>”),另外是在< configSections></ configSections >之后設(shè)置配置節(jié)(上面配置文件模式中的“<Custom element for configuration section>”),有點(diǎn)類似一個(gè)變量先聲明,后使用一樣。聲明一個(gè)配置文件的語句如下: 
<section name=" " type=" "/> 
<section>:聲明新配置節(jié),即可創(chuàng)建新配置節(jié)。 
name:自定義配置節(jié)的名稱。 
type:自定義配置節(jié)的類型,主要包括System.Configuration.SingleTagSectionHandler、 System.Configuration.DictionarySectionHandler、 System.Configuration.NameValueSectionHandler。 
不同的type不但設(shè)置配置節(jié)的方式不一樣,最后訪問配置文件的操作上也有差異。下面我們就舉一個(gè)配置文件的例子,讓它包含這三個(gè)不同的type。 

復(fù)制代碼代碼如下:


<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<section name="Test1" type="System.Configuration.SingleTagSectionHandler"/> 
<section name="Test2" type="System.Configuration.DictionarySectionHandler"/> 
<section name="Test3" type="System.Configuration.NameValueSectionHandler" /> 
</configSections> 
<Test1 setting1="Hello" setting2="World"/> 
<Test2> 
<add key="Hello" value="World" /> 
</Test2> 
<Test3> 
<add key="Hello" value="World" /> 
</Test3> 
</configuration> 


我們對上面的自定義配置節(jié)進(jìn)行說明。在聲明部分使用<section name="Test1" type="System.Configuration.SingleTagSectionHandler"/>聲明了一個(gè)配置節(jié)它的名字叫 Test1,類型為SingleTagSectionHandler。在設(shè)置配置節(jié)部分使用 <Test1 setting1="Hello" setting2="World"/>設(shè)置了一個(gè)配置節(jié),它的第一個(gè)設(shè)置的值是Hello,第二個(gè)值是World,當(dāng)然還可以有更多。其它的兩個(gè)配 置節(jié)和這個(gè)類似。 
下面我們看在程序中如何訪問這些自定義的配置節(jié)。我們用過ConfigurationSettings類的靜態(tài)方法GetConfig來獲取自定義配置節(jié)的信息。 
public static object GetConfig(string sectionName); 
下面是訪問這三個(gè)配置節(jié)的代碼: 

復(fù)制代碼代碼如下:


//訪問配置節(jié)Test1 
IDictionary IDTest1 = (IDictionary)ConfigurationSettings.GetConfig("Test1"); 
string str = (string)IDTest1["setting1"] +" "+(string)IDTest1["setting2"]; 
MessageBox.Show(str); //輸出Hello World 
//訪問配置節(jié)Test1的方法2 
string[] values1=new string[IDTest1.Count]; 
IDTest1.Values.CopyTo(values1,0); 
MessageBox.Show(values1[0]+" "+values1[1]); //輸出Hello World 
//訪問配置節(jié)Test2 
IDictionary IDTest2 = (IDictionary)ConfigurationSettings.GetConfig("Test2"); 
string[] keys=new string[IDTest2.Keys.Count]; 
string[] values=new string[IDTest2.Keys.Count]; 
IDTest2.Keys.CopyTo(keys,0); 
IDTest2.Values.CopyTo(values,0); 
MessageBox.Show(keys[0]+" "+values[0]); 
//訪問配置節(jié)Test3 
NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("Test3"); 
MessageBox.Show(nc.AllKeys[0].ToString()+" "+nc["Hello"]); //輸出Hello World 


通過上面的代碼我們可以看出,不同的type通過GetConfig返回的類型不同,具體獲得配置內(nèi)容的方式也不一樣。 配置節(jié)處理程序 
返回類型 

復(fù)制代碼代碼如下:


SingleTagSectionHandler 
Systems.Collections.IDictionary 
DictionarySectionHandler 
Systems.Collections.IDictionary 
NameValueSectionHandler 
Systems.Collections.Specialized.NameValueCollection 


3.2 自定義配置節(jié)組 
配置節(jié)組是使用<sectionGroup>元素,將類似的配置節(jié)分到同一個(gè)組中。配置節(jié)組聲明 部分將創(chuàng)建配置節(jié)的包含元素,在<configSections>元素中聲明配置節(jié)組,并將屬于該組的節(jié)置于< sectionGroup>元素中。下面是一個(gè)包含配置節(jié)組的配置文件的例子: 

復(fù)制代碼代碼如下:


<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<sectionGroup name="TestGroup"> 
<section name="Test" type="System.Configuration.NameValueSectionHandler"/> 
</sectionGroup> 
</configSections> 
<TestGroup> 
<Test> 
<add key="Hello" value="World"/> 
</Test> 
</TestGroup> 
</configuration> 


下面是訪問這個(gè)配置節(jié)組的代碼: 
NameValueCollection nc=(NameValueCollection)ConfigurationSettings.GetConfig("TestGroup/Test"); 
MessageBox.Show(nc.AllKeys[0].ToString()+" "+nc["Hello"]); //輸出Hello World 
C# 解析配置文件內(nèi)容 System.Configuration 
1. 創(chuàng)建配置節(jié)類 

必須創(chuàng)建繼承自ConfigurationSection的對象才能進(jìn)行配置數(shù)據(jù)讀寫操作,ConfigurationSection提供了索引器用來獲取和設(shè)置配置數(shù)據(jù),需要注意的是擁有ConfigurationProperty特性的屬性才會(huì)被存儲(chǔ),并且名稱要保持大小寫完全一致,如下面的代碼中,所有的"id"必須保持一樣。 

復(fù)制代碼代碼如下:


class ConfigSectionData : ConfigurationSection 

[ConfigurationProperty("id")] 
public int Id 

get { return (int)this["id"]; } 
set { this["id"] = value; } 

[ConfigurationProperty("time")] 
public DateTime Time 

get { return (DateTime)this["time"]; } 
set { this["time"] = value; } 


2. 創(chuàng)建配置文件操作對象 

復(fù)制代碼代碼如下:


Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
ConfigSectionData data = new ConfigSectionData(); 
data.Id = 1000; 
data.Time = DateTime.Now; 
config.Sections.Add("add", data); 
config.Save(ConfigurationSaveMode.Minimal); 


上面的例子是操作 app.config,在根節(jié)點(diǎn)(configuration)下寫入名稱為"add"的配置數(shù)據(jù)。 

復(fù)制代碼代碼如下:


<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<section name="add" type="ConsoleApplication1.ConfigSectionData, ... /> 
</configSections> 
<add id="1000" time="02/18/2006 21:51:06" /> 
</configuration> 


需要注意的 VS2005 在IDE模式下會(huì)將信息寫入 *.vshost.exe.config,并且在程序關(guān)閉時(shí)覆寫該文件,因此您可能看不到您寫入的配置數(shù)據(jù),只要在資源管理其中執(zhí)行 *.exe 文件,您就可以在 *.exe.config 文件中看到結(jié)果了。 
如果我們需要操作非缺省配置文件,可以使用ExeConfigurationFileMap對象。 

復(fù)制代碼代碼如下:


ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 
file.ExeConfigFilename = "test.config"; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 
ConfigSectionData data = new ConfigSectionData(); 
data.Id = 1000; 
data.Time = DateTime.Now; 
config.Sections.Add("add", data); 
config.Save(ConfigurationSaveMode.Minimal); 


如果我們不希望在根節(jié)點(diǎn)下寫入配置數(shù)據(jù),可以使用ConfigurationSectionGroup對象。 

復(fù)制代碼代碼如下:


ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 
file.ExeConfigFilename = "test.config"; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 
ConfigSectionData data = new ConfigSectionData(); 
data.Id = 1000; 
data.Time = DateTime.Now; 
config.SectionGroups.Add("group1", new ConfigurationSectionGroup()); 
config.SectionGroups["group1"].Sections.Add("add", data); 
config.Save(ConfigurationSaveMode.Minimal); 


下面就是生成的配置文件。 

復(fù)制代碼代碼如下:


<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<configSections> 
<sectionGroup name="group1" type="System.Configuration.ConfigurationSectionGroup, ... > 
<section name="add" type="ConsoleApplication1.ConfigSectionData, ... /> 
</sectionGroup> 
</configSections> 
<group1> 
<add id="1000" time="02/18/2006 22:01:02" /> 
</group1> 
</configuration> 


3. 讀取配置文件 

復(fù)制代碼代碼如下:


ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 
file.ExeConfigFilename = "test.config"; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 
ConfigSectionData data = config.SectionGroups["group1"].Sections["add"] as ConfigSectionData; 
//ConfigSectionData data = config.Sections["add"] as ConfigSectionData; // 從根節(jié)讀取 
if (data != null) 

Console.WriteLine(data.Id); 
Console.WriteLine(data.Time); 


4. 寫配置文件 
在寫入 ConfigurationSectionGroup 和 ConfigurationSection 前要判斷同名配置是否已經(jīng)存在,否則會(huì)寫入失敗。 
另外如果配置文件被其他Configuration對象修改,則保存會(huì)失敗,并拋出異常。建議采用Singleton模式。 

復(fù)制代碼代碼如下:


ExeConfigurationFileMap file = new ExeConfigurationFileMap(); 
file.ExeConfigFilename = "test.config"; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None); 
ConfigSectionData data = new ConfigSectionData(); 
data.Id = 2000; 
data.Time = DateTime.Now; 
ConfigurationSectionGroup group1 = config.SectionGroups["group1"]; 
if (group1 == null) 
config.SectionGroups.Add("group1", new ConfigurationSectionGroup()); 
ConfigurationSection data = group1.Sections["add"] as config; 
if (add == null) 
config.SectionGroups["group1"].Sections.Add("add", data); 
else 

group1.Sections.Remove("add"); 
group1.Sections.Add("add", data); 
// 或者直接修改原配置對象,前提是類型轉(zhuǎn)換要成功。 
//ConfigSectionData configData = add as ConfigSectionData; 
//configData.Id = data.Id; 
//configData.Time = data.Time; 

config.Save(ConfigurationSaveMode.Minimal); 


5. 刪除配置節(jié) 

復(fù)制代碼代碼如下:


刪除ConfigurationSectionGroup 
config.SectionGroups.Remove("group1"); 
//config.SectionGroups.Clear(); 
config.Save(ConfigurationSaveMode.Minimal); 
刪除ConfigurationSection 
config.Sections.Remove("add1"); 
//config.Sections.Clear(); 
if (config.SectionGroups["group1"] != null) 

config.SectionGroups["group1"].Sections.Remove("add2"); 
//config.SectionGroups["group1"].Sections.Clear(); 

config.Save(ConfigurationSaveMode.Minimal); 


6. 其他 
可以使用 ConfigurationManager.OpenMachineConfiguration() 來操作 Machine.config 文件。 
或者使用 System.Web.Configuration 名字空間中的 WebConfigurationManager 類來操作 ASP.net 配置文件。 
ConfigurationManager還提供了AppSettings、ConnectionStrings、GetSection()等便捷操作。 
7. 使用自定義類 
可以使用自定義類,不過需要定義一個(gè)轉(zhuǎn)換器。 

復(fù)制代碼代碼如下:


using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Globalization; 
using System.ComponentModel; 
// 要寫入配置文件的自定義類 
class CustomData 

public CustomData(string s) 

this.s = s; 

private string s; 
public string S 

get { return s; } 
set { s = value; } 


// 自定義的轉(zhuǎn)換器(演示代碼省略了類型判斷) 
class CustomConvert : ConfigurationConverterBase 

public override bool CanConvertFrom(ITypeDescriptorContext ctx, Type type) 

return (type == typeof(string)); 

public override object ConvertTo(ITypeDescriptorContext ctx, CultureInfo ci, object value, Type type) 

return (value as CustomData).S; 

public override object ConvertFrom(ITypeDescriptorContext ctx, CultureInfo ci, object data) 

return new CustomData((string)data);; 


class ConfigSectionData : ConfigurationSection 

[ConfigurationProperty("id")] 
public int Id 

get { return (int)this["id"]; } 
set { this["id"] = value; } 

[ConfigurationProperty("time")] 
public DateTime Time 

get { return (DateTime)this["time"]; } 
set { this["time"] = value; } 

[ConfigurationProperty("custom")] 
[TypeConverter(typeof(CustomConvert))] // 指定轉(zhuǎn)換器 
public CustomData Custom 

get { return (CustomData)this["custom"]; } 
set { this["custom"] = value; } 


public class Program 

static void Main(string[] args) 

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
ConfigSectionData data = new ConfigSectionData(); 
data.Id = 1000; 
data.Time = DateTime.Now; 
data.Custom = new CustomData("abcdefg..."); 
config.Sections.Add("add", data); 
config.Save(ConfigurationSaveMode.Minimal); 
// 讀取測試 
ConfigSectionData configData = (ConfigSectionData)config.Sections["add"]; 
Console.WriteLine(configData.Custom.S); 


保存后的配置文件 

復(fù)制代碼代碼如下:


<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<configSections> 
<section name="add" type="..." /> 
</configSections> 
<add id="1000" time="04/17/2006 22:06:58" custom="abcdefg..." /> 
</configuration> 


更詳細(xì)的信息可以看 MSDN 中關(guān)于 System.Configuration.ConfigurationConverterBase 的說明。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 色玖玖综合 | 亚洲人免费视频 | 久久久亚洲国产美女国产盗摄 | 国产一区二区三区在线免费观看 | 久久涩涩| 一区二区三区日韩 | 91精品国产乱码久久久久久久久 | 久久久亚洲 | 拍真实国产伦偷精品 | 中文字幕亚洲欧美 | 黄色网址免费观看 | 亚洲精品日韩综合观看成人91 | 亚洲va欧美va人人爽成人影院 | 视频一区中文字幕 | 午夜爱爱毛片xxxx视频免费看 | 3d动漫精品一区二区三区 | 亚洲大片| www.中文字幕 | 日韩不卡一区二区 | 成人免费观看视频 | 好了av在线 | 亚洲国产精品久久久久秋霞不卡 | 青青久视频 | 日韩精品小视频 | 91精品一久久香蕉国产线看观看新通道出现 | 欧美一区二区二区 | 日韩在线播放一区二区三区 | 欧美视频第一页 | 国产精品高潮呻吟久久 | 日日操天天操 | 欧美性大战久久久 | 亚洲视频在线免费观看 | 国产在线一区二区三区 | 黄a在线观看 | 亚洲精品成人 | 日韩毛片免费在线观看 | 久久亚洲美女 | 操操操干干干 | 色欧美亚洲 | 成人国产精品久久久 | 国产精品久久久久久久久小说 |