- //读取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保存配置
- XmlDocumentdocument=LoadXml();
- XmlNoderoot=document.DocumentElement;
- XmlNodeListnodeList=root.FirstChild.ChildNodes;
- for(inti=0;i<nodeList.Count;i++)
- {
- stringkey=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类的实例:
- Configurationconfig=System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
对于WinForm的config文件,可以用如下代码得到Configuration类的实例:
- Configurationconfig=System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
需要注意的是,对文件进行写操作之后,需要调用Save()方法保存结果。整个程序的源代码如下,并附有详细代码注释。
- usingSystem;
- usingSystem.Configuration;
- usingSystem.Web;
- usingSystem.Windows.Forms;
- namespaceNetSkycn.Common
- {
- ///<summary>
- ///说明:Config文件类型枚举,
- ///分别为asp.net网站的config文件和WinForm的config文件
- ///作者:周公
- ///日期:2008-08-23
- ///首发地址:http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/08/24/2823508.aspx
- ///</summary>
- publicenumConfigType
- {
- ///<summary>
- ///asp.net网站的config文件
- ///</summary>
- WebConfig=1,
- ///<summary>
- ///Windows应用程序的config文件
- ///</summary>
- ExeConfig=2
- }
- ///<summary>
- ///说明:本类主要负责对程序配置文件(.config)进行修改的类,
- ///可以对网站和应用程序的配置文件进行修改
- ///作者:周公
- ///日期:2008-08-23
- ///首发地址:http://blog.youkuaiyun.com/zhoufoxcn/archive/2008/08/24/2823508.aspx
- ///</summary>
- publicclassConfigurationOperator
- {
- privateConfigurationconfig;
- privatestringconfigPath;
- privateConfigTypeconfigType;
- ///<summary>
- ///对应的配置文件
- ///</summary>
- publicConfigurationConfiguration
- {
- get{returnconfig;}
- set{config=value;}
- }
- ///<summary>
- ///构造函数
- ///</summary>
- ///<paramname="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
- publicConfigurationOperator(ConfigTypeconfigType)
- {
- this.configType=configType;
- if(configType==ConfigType.ExeConfig)
- {
- configPath=Application.ExecutablePath;//AppDomain.CurrentDomain.BaseDirectory;
- }
- else
- {
- configPath=HttpContext.Current.Request.ApplicationPath;
- }
- Initialize();
- }
- ///<summary>
- ///构造函数
- ///</summary>
- ///<paramname="path">.config文件的位置</param>
- ///<paramname="type">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
- publicConfigurationOperator(stringconfigPath,ConfigTypeconfigType)
- {
- this.configPath=configPath;
- this.configType=configType;
- Initialize();
- }
- //实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法
- privatevoidInitialize()
- {
- //如果是WinForm应用程序的配置文件
- if(configType==ConfigType.ExeConfig)
- {
- config=System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
- }
- else//WebForm的配置文件
- {
- config=System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
- }
- }
- ///<summary>
- ///添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值
- ///</summary>
- ///<paramname="key">节点名称</param>
- ///<paramname="value">节点值</param>
- publicvoidAddAppSetting(stringkey,stringvalue)
- {
- AppSettingsSectionappSetting=(AppSettingsSection)config.GetSection("appSettings");
- if(appSetting.Settings[key]==null)//如果不存在此节点,则添加
- {
- appSetting.Settings.Add(key,value);
- }
- else//如果存在此节点,则修改
- {
- ModifyAppSetting(key,value);
- }
- }
- ///<summary>
- ///添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值
- ///</summary>
- ///<paramname="key">节点名称</param>
- ///<paramname="value">节点值</param>
- publicvoidAddConnectionString(stringkey,stringconnectionString)
- {
- ConnectionStringsSectionconnectionSetting=(ConnectionStringsSection)config.GetSection("connectionStrings");
- if(connectionSetting.ConnectionStrings[key]==null)//如果不存在此节点,则添加
- {
- ConnectionStringSettingsconnectionStringSettings=newConnectionStringSettings(key,connectionString);
- connectionSetting.ConnectionStrings.Add(connectionStringSettings);
- }
- else//如果存在此节点,则修改
- {
- ModifyConnectionString(key,connectionString);
- }
- }
- ///<summary>
- ///修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值
- ///</summary>
- ///<paramname="key">节点名称</param>
- ///<paramname="value">节点值</param>
- publicvoidModifyAppSetting(stringkey,stringnewValue)
- {
- AppSettingsSectionappSetting=(AppSettingsSection)config.GetSection("appSettings");
- if(appSetting.Settings[key]!=null)//如果存在此节点,则修改
- {
- appSetting.Settings[key].Value=newValue;
- }
- else//如果不存在此节点,则添加
- {
- AddAppSetting(key,newValue);
- }
- }
- ///<summary>
- ///修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值
- ///</summary>
- ///<paramname="key">节点名称</param>
- ///<paramname="value">节点值</param>
- publicvoidModifyConnectionString(stringkey,stringconnectionString)
- {
- ConnectionStringsSectionconnectionSetting=(ConnectionStringsSection)config.GetSection("connectionStrings");
- if(connectionSetting.ConnectionStrings[key]!=null)//如果存在此节点,则修改
- {
- connectionSetting.ConnectionStrings[key].ConnectionString=connectionString;
- }
- else//如果不存在此节点,则添加
- {
- AddConnectionString(key,connectionString);
- }
- }
- ///<summary>
- ///保存所作的修改
- ///</summary>
- publicvoidSave()
- {
- config.Save();
- }
- }
- }
用法实例:
(一)WebForm中的用法
- ConfigurationOperatorco=newConfigurationOperator(ConfigType.WebConfig);
- stringkey=txtConnectionStringKey.Text;
- stringvalue=txtConnectionStringValue.Text;
- co.AddConnectionString(key,value);
- co.Save();
(二)WinForm中的用法
- ConfigurationOperatorco=newConfigurationOperator(ConfigType.ExeConfig);
- co.AddAppSetting("Font-Size","9");
- co.AddAppSetting("WebSite","http://blog.youkuaiyun.com/zhoufoxcn");
- co.AddConnectionString("Connection","test");
- co.Save();//保存写入结果
我在WinForm里加入了一个空白的app.config文件,经过上面的操作得到如下结果(这个文件是和最后生成的exe文件在同一个目录下,而不是和源代码在同一文件夹下的那个config文件):
- <?xmlversion="1.0"encoding="utf-8"?>
- <configuration>
- <appSettings>
- <addkey="Font-Size"value="9"/>
- <addkey="WebSite"value="http://blog.youkuaiyun.com/zhoufoxcn"/>
- </appSettings>
- <connectionStrings>
- <addname="Connection"connectionString="test"/>
- </connectionStrings>
- </configuration>
经过这个封装类可以简化对config配置文件的操作,仅仅是需要在实例化Configuration类的实例时指明打开的是网站还是应用程序的config文件,并且在进行了所有修改和增加操作之后调用Save()方法保存所做的修改即可。需要注意的是:要想把上面的程序作为类库编译,需要添加对System.Web.dll和System.Windows.Forms.dll和System.Configuration.dll类库的引用。
配置文件操作指南
本文介绍如何使用.NET Framework中的System.Configuration命名空间来读取和修改app.config或web.config文件。包括添加、修改应用设置及数据库连接字符串的方法。
5763

被折叠的 条评论
为什么被折叠?



