[EnterpriseLibrary].NET程序中配置文件(.config)操作
2007-01-03 17:32
609 查看
好久没有写点东西了,很久以前就对EnterpriseLibrary很感兴趣,但是一直没有时间去研究和使用这个强大的企业库。最近终于狠下心来,下载了Microsoft Enterprise Library 3.0 - December 2006 CTP,但对这么大的一个类库,想一下子进入状态那是不可能的,从中发现配置文件的关键,特别是配置文件的操作那是相当的不错。我想不论是小网站还是大项目,都会涉及到对配置文件的操作,通过收集和我做过得一些项目在这里整理了一下.NET2.0对配置文件的操作。
在客户端应用程序中我们可以用ConfigurationManager这个类来操作,在Web程序中我们可以应用WebConfigurationManager这个类,其实他们使用方法差不多,他们分别位于System.Configuration和System.Web.Configuration命名空间下。我们要对配置文件进行操作当然我们的引入该类所在的命名空间,由于我们经常见到Web应用程序这里主要讨论一下Web.Config中的操作。
对原有的节点的读取等操作.NET都有了很好的封装,下面我们来看看对自定义节点的操作,有了这个咚咚我们就可以在后台添加一个UI以实现对配置文件某些节点的修改和增添,当然也可以应用于版本升级等。我们先建立一个我们要定义的节点的类,该类必须继承System.Configuraion.ConfigurationSection类,如果有嵌套元素必须继承SystemConfiguration.ConfigurationElement类,在将该类或其集合包含于父节点的类中。
public class NSection : ConfigurationSection {
public NSection() {
}
[ConfigurationProperty("id")]
public int ID
{
get { return (int)this["id"]; }
set { this["id"] = value; }
}
[ConfigurationProperty("name")]
public string Name
{
get { return this["name"].ToString(); }
set { this["name"] = value; }
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("id = {0};name = {1}", ID, Name);
return sb.ToString();
}
}
上面我们定义了一个类,即我们要定义的节点,我们在节点中插入一个ID和Name。下面我们把这个节点加入到配置文件中:(注:可能原来有节点存在,我们先移除后加入!)看看代码;
protected void Page_Load(object sender, EventArgs e)
{
NSection section = new NSection();
section.ID = 1;
section.Name = "Test";
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
config.Sections.Remove("nSection");
config.Sections.Add("nSection", section);
config.Save();
}
运行后看看Web.config有什么变化,是不是多了一个nSection节点,由于我是直接在Default.aspx中测试,所以加入configSections中的type属性有点别扭,看看配置(Web.config)文件:
<configSections>
<section name="nSection" type="_Default+NSection, App_Web_sct0la5g, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<nSection id="1" name="Test" />
以上实现了对配置文件节点的增添,下面看看对现有文件的修改,同样应用上面的类:
Configuration config1 = WebConfigurationManager.OpenWebConfiguration("~");
NSection section1 = config1.GetSection("nSection") as NSection;
section1.ID = 2;
section1.Name = "Test2";
config1.Save();
这里可能会出现一个错误,如果你也用Default.aspx文件来直接定义NSection类,应为程序集的应用会出错,即<section name="nSection" type="_Default+NSection, App_Web_sct0la5g, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />。运行上面的程序就可以得到我们所有的结果。有时候一个配置文件显得太扎乱,需要多个配置文件,那如何操作其他的配置文件呢?我们可以通过ConfigurationFileMap fileMap = new ConfigurationFileMap();
fileMap.MachineConfigFilename = Server.MapPath("NExplus.config");
System.Configuration.Configuration config = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);来打开其他的和Web.config没有什么区别。值得注意的是其他的配置文件中必须要有:
<?xml version="1.0"?>
<configuration>
</configuration>
否则就会报错。
我想很多人都用过序列化和反序列化来完成这样的操作,得到的结果是一样的。微软给了我们这个咚咚,我们应该用用J.其实在客户端的应用程序也就是用不同的类而已,用不同的方法来打开配置文件,其他的没什么不同。这篇文章是为了能更好的理解EnterpriseLibrary而作的一个总结,希望对大家也带来一点帮助!
在客户端应用程序中我们可以用ConfigurationManager这个类来操作,在Web程序中我们可以应用WebConfigurationManager这个类,其实他们使用方法差不多,他们分别位于System.Configuration和System.Web.Configuration命名空间下。我们要对配置文件进行操作当然我们的引入该类所在的命名空间,由于我们经常见到Web应用程序这里主要讨论一下Web.Config中的操作。
对原有的节点的读取等操作.NET都有了很好的封装,下面我们来看看对自定义节点的操作,有了这个咚咚我们就可以在后台添加一个UI以实现对配置文件某些节点的修改和增添,当然也可以应用于版本升级等。我们先建立一个我们要定义的节点的类,该类必须继承System.Configuraion.ConfigurationSection类,如果有嵌套元素必须继承SystemConfiguration.ConfigurationElement类,在将该类或其集合包含于父节点的类中。
public class NSection : ConfigurationSection {
public NSection() {
}
[ConfigurationProperty("id")]
public int ID
{
get { return (int)this["id"]; }
set { this["id"] = value; }
}
[ConfigurationProperty("name")]
public string Name
{
get { return this["name"].ToString(); }
set { this["name"] = value; }
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("id = {0};name = {1}", ID, Name);
return sb.ToString();
}
}
上面我们定义了一个类,即我们要定义的节点,我们在节点中插入一个ID和Name。下面我们把这个节点加入到配置文件中:(注:可能原来有节点存在,我们先移除后加入!)看看代码;
protected void Page_Load(object sender, EventArgs e)
{
NSection section = new NSection();
section.ID = 1;
section.Name = "Test";
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
config.Sections.Remove("nSection");
config.Sections.Add("nSection", section);
config.Save();
}
运行后看看Web.config有什么变化,是不是多了一个nSection节点,由于我是直接在Default.aspx中测试,所以加入configSections中的type属性有点别扭,看看配置(Web.config)文件:
<configSections>
<section name="nSection" type="_Default+NSection, App_Web_sct0la5g, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<nSection id="1" name="Test" />
以上实现了对配置文件节点的增添,下面看看对现有文件的修改,同样应用上面的类:
Configuration config1 = WebConfigurationManager.OpenWebConfiguration("~");
NSection section1 = config1.GetSection("nSection") as NSection;
section1.ID = 2;
section1.Name = "Test2";
config1.Save();
这里可能会出现一个错误,如果你也用Default.aspx文件来直接定义NSection类,应为程序集的应用会出错,即<section name="nSection" type="_Default+NSection, App_Web_sct0la5g, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />。运行上面的程序就可以得到我们所有的结果。有时候一个配置文件显得太扎乱,需要多个配置文件,那如何操作其他的配置文件呢?我们可以通过ConfigurationFileMap fileMap = new ConfigurationFileMap();
fileMap.MachineConfigFilename = Server.MapPath("NExplus.config");
System.Configuration.Configuration config = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);来打开其他的和Web.config没有什么区别。值得注意的是其他的配置文件中必须要有:
<?xml version="1.0"?>
<configuration>
</configuration>
否则就会报错。
我想很多人都用过序列化和反序列化来完成这样的操作,得到的结果是一样的。微软给了我们这个咚咚,我们应该用用J.其实在客户端的应用程序也就是用不同的类而已,用不同的方法来打开配置文件,其他的没什么不同。这篇文章是为了能更好的理解EnterpriseLibrary而作的一个总结,希望对大家也带来一点帮助!
相关文章推荐
- Config程序配置文件操作实践进阶之ConfigurationSectionGroup
- Config程序配置文件操作实践及代码详注
- Config程序配置文件操作实践进阶之ConfigurationSectionGroup
- 程序 操作 web.config(配置文件)
- Config程序配置文件操作实践进阶之ConfigurationSectionGroup
- 一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)
- 操作.net的配置文件
- WinForm中使用XML文件存储用户配置及操作本地Config配置文件(zt)
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- 如何在Web和桌面程序统一配置文件XXX.Config
- .net如何自定义config配置文件节点
- C# WinForm程序的App.Config数据库连接配置文件
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- .NET开发笔记--对config文件的操作(2)
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- 种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)(转自:http://blog.csdn.net/shaily/article)
- C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
- C#中对Web.config配置文件的操作(增删改读)
- c# winform app.config xml 配置文件 读写操作
- 【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序