首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>.NET2.0>实例讲解在.net2.0中对config文件的操作方法总结
实例讲解在.net2.0中对config文件的操作方法总结
来源: 发布时间:2008-11-03 发布人: 浏览: 人次   字体: [ ]  

在.net程序开发中,我们经常会在config文件来保存一些常用的应用程序配置信息,在WinForm中这个文件名字是app.config,在asp.net中叫web.config。这个.config文件其实就是一个xml文件,对它的读操作微软已经提供了一个类来实现了,这个类就是System.Configuration.ConfigurationManager,下面分别是例子:
//读取config里名称为“conn”数据库连接信息
     connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
//读取config里名称为"Font_Size"的应用程序配置信息
System.Configuration.ConfigurationManager.AppSettings["Font-Size"] = 9;
不过利用这个类却不能对config文件进行写操作。对于config文件的写操作,很多人通过xml的方式来进行,按照xml的方式进行写操作在WinForm下虽然繁琐点,但是毕竟能完成。以下是按照xml文件进行写的例子。

#region 保存配置
            XmlDocument document = LoadXml();
            XmlNode root = document.DocumentElement;
            XmlNodeList nodeList = root.FirstChild.ChildNodes;
            for (int i = 0; i < nodeList.Count; i++)
            {
                string key = nodeList[i].Attributes["key"].Value;
                if (key == "FilterOption")
                {
                    nodeList[i].Attributes["value"].Value = ((int)container.FilterOption).ToString();
                }
            }
            document.Save(configPath);
            #endregion

但是在WebForm下,往往会因为权限不足而报错。如下图:

本文提供了另外一种方式,利用.net2.0类库里面的Configuration来进行写操作。详细介绍请看下面的详细介绍。

Configuration 是允许进行编程访问以编辑配置文件的类。对于WebForm的config文件,可以用如下代码得到Configuration类的实例:

Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
对于WinForm的config文件,可以用如下代码得到Configuration类的实例:

Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
需要注意的是,对文件进行写操作之后,需要调用Save()方法保存结果。整个程序的源代码如下,并附有详细代码注释。

using System;
using System.Configuration;
using System.Web;
using System.Windows.Forms;

namespace NetSkycn.Common
{
    /// <summary>
    /// 说明:Config文件类型枚举,
   /// 分别为asp.net网站的config文件和WinForm的config文件    
    /// </summary>
    public enum ConfigType
    {
        /// <summary>
        /// asp.net网站的config文件
        /// </summary>
        WebConfig = 1,
        /// <summary>
        /// Windows应用程序的config文件
        /// </summary>
        ExeConfig = 2
    }

    /// <summary>
    /// 说明:本类主要负责对程序配置文件(.config)进行修改的类,
    /// 可以对网站和应用程序的配置文件进行修改    
    /// </summary>
    public class ConfigurationOperator
    {
        private Configuration config;
        private string configPath;
        private ConfigType configType;

        /// <summary>
        /// 对应的配置文件
        /// </summary>
        public Configuration Configuration
        {
            get { return config; }
            set { config = value; }
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
        public ConfigurationOperator(ConfigType configType)
        {
            this.configType = configType;
            if (configType == ConfigType.ExeConfig)
            {
                configPath = Application.ExecutablePath; //AppDomain.CurrentDomain.BaseDirectory;
            }
            else
            {
                configPath = HttpContext.Current.Request.ApplicationPath;
            }
            Initialize();
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="path">.config文件的位置</param>
        /// <param name="type">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
        public ConfigurationOperator(string configPath, ConfigType configType)
        {
            this.configPath = configPath;
            this.configType = configType;
            Initialize();
        }
        //实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法
        private void Initialize()
        {
            //如果是WinForm应用程序的配置文件
            if (configType == ConfigType.ExeConfig)
            {
                config = System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
            }
            else//WebForm的配置文件
            {
                config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
            }
        }

        /// <summary>
        /// 添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值
        /// </summary>
        /// <param name="key">节点名称</param>
        /// <param name="value">节点值</param>
        public void AddAppSetting(string key, string value)
        {
            AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
            if (appSetting.Settings[key] == null)//如果不存在此节点,则添加
            {
                appSetting.Settings.Add(key, value);
            }
            else//如果存在此节点,则修改
            {
                ModifyAppSetting(key, value);
            }
        }
        /// <summary>
        /// 添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值
        /// </summary>
        /// <param name="key">节点名称</param>
        /// <param name="value">节点值</param>
        public void AddConnectionString(string key, string connectionString)
        {
            ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
            if (connectionSetting.ConnectionStrings[key] == null)//如果不存在此节点,则添加
            {
                ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings(key, connectionString);
                connectionSetting.ConnectionStrings.Add(connectionStringSettings);
            }
            else//如果存在此节点,则修改
            {
                ModifyConnectionString(key, connectionString);
            }
        }
        /// <summary>
        /// 修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值
        /// </summary>
        /// <param name="key">节点名称</param>
        /// <param name="value">节点值</param>
        public void ModifyAppSetting(string key, string newValue)
        {
            AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
            if (appSetting.Settings[key] != null)//如果存在此节点,则修改
            {
                appSetting.Settings[key].Value = newValue;
            }
            else//如果不存在此节点,则添加
            {
                AddAppSetting(key, newValue);
            }
        }
        /// <summary>
        /// 修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值
        /// </summary>
        /// <param name="key">节点名称</param>
        /// <param name="value">节点值</param>
        public void ModifyConnectionString(string key, string connectionString)
        {
            ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
            if (connectionSetting.ConnectionStrings[key] != null)//如果存在此节点,则修改
            {
                connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;
            }
            else//如果不存在此节点,则添加
            {
                AddConnectionString(key, connectionString);
            }
        }
        /// <summary>
        /// 保存所作的修改
        /// </summary>
        public void Save()
        {
            config.Save();
        }
    }
}
 
用法实例:


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·如何让GridView控件支持分页的自动编...
·.net如何将ListViewItem转换为ListVi...
·如何在asp.net中获取GridView隐藏列...
·gridview控件嵌套gridview控件的方法...
·asp.net2.0调用CSS无效的主要原因及...
·在GridView控件中使用DataKeyNames属...
·ASP.NET2.0中控件的简单异步回调
·C#2.0纯数学方法递归实现货币数字转...
·ASP.NET 2.0 中的母版页详解
·ASP.NET2.0中轻松实现网站换肤功能
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·包含32种常见的用户输入验证...
·asp.net不使用服务器控件的情
·如何更改单个aspx页面的编码...
·实例讲解如何设置gridview的...
·asp.NET 2.0中引发CSS失效问...
·GridView通过模板列实现第一...
·VS2005利用TreeView控件和递...
·DataView对象获取数据行相应...
·GridView中固定列的两种方法
·为GridView控件添加分页导航...
·Net2.0中使用母版页及其母版...
·实例解决GridView中弹出对话...
·Gridview控件字段内容过长的...
·图解ASP.NET下AJAX安装(VS20...
·重写GridView实现单击行变色...
热 门 文 章
·asp.net(C#)弹出窗口返回值并...
·VS2005利用Excel组件操作Exce...
·AJAX实现无刷新适时显示gridV...
·gridview表头固定并实现打印...
·Js获取radiobuttonlist选中值...
·gridview绑定数据显示的各种...
·ASP.NET中“无法加载 DLL 找...
·asp.net文件下载防止乱码出现...
·asp.net2.0回发或回调参数无...
·实现gridview内容打印功能的...
·ASP.NET多个用户控件回车提交...
·Asp.net页面传递参数的几种方...
·图解ASP.NET下AJAX安装(VS20...
·实例解决GridView中弹出对话...
·如何在asp.net中获取GridView...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .