我们往往需要在App.config中自定义一些节来满足实际需要,而不依赖于App.config的appSettings,下面通过一个简单的实例来说明自定义配置节点的设置与读取(该实例抽取于FTP上传程序)。
在App.config配置文件中使用自定义配置,需要在configSections中添加一个section元素,并指定此section元素对应的名字和类型,然后再在configuration根节点下面添加此自定义配置节。
1、我们在App.config中添加如下的自定义节点(配置了一组相同类型的节点,用于上传文件目录,FTP服务器地址及登陆信息):
<!--自定义节点:上传文件目录,FTP服务器地址及登陆信息--> <DZConfig> <AddressConfig> <FilePath>D:\ABC\1\</FilePath> <LogPath>D:\ABC\</LogPath> <uploadUrl>ftp://10.1.1.2</uploadUrl> <userName>user</userName> <passWord>1234</passWord> </AddressConfig> <AddressConfig> <FilePath>D:\ABC\2\</FilePath> <LogPath>D:\ABC\</LogPath> <uploadUrl>ftp://10.1.1.3</uploadUrl> <userName>user</userName> <passWord>1234</passWord> </AddressConfig> <AddressConfig> <FilePath>D:\ABC\3\</FilePath> <LogPath>D:\ABC\</LogPath> <uploadUrl>ftp://10.1.1.4</uploadUrl> <userName>user</userName> <passWord>1234</passWord> </AddressConfig> </DZConfig>2、然后在App.config的configSections中添加section元素(section 元素将配置节处理程序与配置元素或节关联)(其中name为自定义节点的名称,type为自定义节点解析文件的命名空间和自定义节处理程序的类名)
<configSections> <section name="DZConfig" type="FTP_SendServices.ConvertCfgSectionHandler,FTP_SendServices"/></configSections>3、创建自定义配置节处理程序,节处理程序用来解释并处理 Web.config 文件特定部分中 XML 配置元素中定义的设置,并根据配置设置返回适当的配置对象。使用该配置对象,以对自定义配置元素进行读取和写入。新建名为DZConfig.cs的文件,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;using System.Configuration;using System.Collections;namespace FTP_SendServices{ public class DZConfigSection { DZConfigSection() { } #region 属性定义 private string _FilePath; private string _LogPath; private string _uploadUrl; private string _userName; private string _passWord; public string FilePath { get { return _FilePath; } set { _FilePath = value; } } public string LogPath { get { return _LogPath; } set { _LogPath = value; } } public string uploadUrl { get { return _uploadUrl; } set { _uploadUrl = value; } } public string userName { get { return _userName; } set { _userName = value; } } public string passWord { get { return _passWord; } set { _passWord = value; } } #endregion public DZConfigSection(XmlNode AddressConfig) { XmlElement c = (XmlElement)AddressConfig; _FilePath = c.SelectSingleNode("FilePath").InnerText; _LogPath = c.SelectSingleNode("LogPath").InnerText; _uploadUrl = c.SelectSingleNode("uploadUrl").InnerText; _userName = c.SelectSingleNode("userName").InnerText; _passWord = c.SelectSingleNode("passWord").InnerText; } } //创建一个实现 System.Configuration.IConfigurationSectionHandler 接口的公共类。 public class ConvertCfgSectionHandler : IConfigurationSectionHandler { public ConvertCfgSectionHandler() { } public object Create(object parent, object configContext, XmlNode section) { //添加您自己的代码,以执行所需的配置工作。 List _list = new List(); foreach (XmlNode AddressConfig in section.SelectNodes("//AddressConfig")) { DZConfigSection _DZConfig = new DZConfigSection(AddressConfig); _list.Add(_DZConfig); } return _list; } } public class DZConfig { public static List GetConfigList() { return (List)ConfigurationSettings.GetConfig("DZConfig"); } }}4、在程序中使用配置节点信息。下面就是节点的读取,遍历整个自定义节点的数据:
List _ConfigList = DZConfig.GetConfigList();foreach (DZConfigSection Config in _ConfigList){ LogPath =Config.LogPath + "log" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; FileHelper.WriteFile(LogPath, DateTime.Now.ToString() + " 数据发送功能启动!"); string dir = Config.FilePath; string uploadUrl =Config.uploadUrl; string userName = Config.userName; string passWord = Config.passWord; string[] files = Directory.GetFiles(dir);}
没有评论:
发表评论