`
jinvasshole
  • 浏览: 769082 次
文章分类
社区版块
存档分类
最新评论

.net2.0中对config文件的操作方法总结

 
阅读更多
在.net编程中,我们经常用到config文件来保存一些常用的应用程序配置信息,在WinForm中这个文件名字是app.config,在asp.net中叫web.config。这个.config文件其实就是一个xml文件,对它的读操作微软已经提供了一个类来实现了,这个类就是System.Configuration.ConfigurationManager,下面分别是例子:
  1. //读取config里名称为“conn”数据库连接信息
  2. connectionString=System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
  3. //读取config里名称为"Font_Size"的应用程序配置信息
  4. System.Configuration.ConfigurationManager.AppSettings["Font-Size"]=9;

不过利用这个类却不能对config文件进行写操作。对于config文件的写操作,很多人通过xml的方式来进行,按照xml的方式进行写操作在WinForm下虽然繁琐点,但是毕竟能完成。以下是按照xml文件进行写的例子。

  1. #region保存配置
  2. XmlDocumentdocument=LoadXml();
  3. XmlNoderoot=document.DocumentElement;
  4. XmlNodeListnodeList=root.FirstChild.ChildNodes;
  5. for(inti=0;i<nodeList.Count;i++)
  6. {
  7. stringkey=nodeList[i].Attributes["key"].Value;
  8. if(key=="FilterOption")
  9. {
  10. nodeList[i].Attributes["value"].Value=((int)container.FilterOption).ToString();
  11. }
  12. }
  13. document.Save(configPath);
  14. #endregion


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

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

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

  1. Configurationconfig=System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);

对于WinForm的config文件,可以用如下代码得到Configuration类的实例:

  1. Configurationconfig=System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);

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

  1. usingSystem;
  2. usingSystem.Configuration;
  3. usingSystem.Web;
  4. usingSystem.Windows.Forms;
  5. namespaceNetSkycn.Common
  6. {
  7. ///<summary>
  8. ///说明:Config文件类型枚举,
  9. ///分别为asp.net网站的config文件和WinForm的config文件
  10. ///作者:周公
  11. ///日期:2008-08-23
  12. ///首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/08/24/2823508.aspx
  13. ///</summary>
  14. publicenumConfigType
  15. {
  16. ///<summary>
  17. ///asp.net网站的config文件
  18. ///</summary>
  19. WebConfig=1,
  20. ///<summary>
  21. ///Windows应用程序的config文件
  22. ///</summary>
  23. ExeConfig=2
  24. }
  25. ///<summary>
  26. ///说明:本类主要负责对程序配置文件(.config)进行修改的类,
  27. ///可以对网站和应用程序的配置文件进行修改
  28. ///作者:周公
  29. ///日期:2008-08-23
  30. ///首发地址:http://blog.csdn.net/zhoufoxcn/archive/2008/08/24/2823508.aspx
  31. ///</summary>
  32. publicclassConfigurationOperator
  33. {
  34. privateConfigurationconfig;
  35. privatestringconfigPath;
  36. privateConfigTypeconfigType;
  37. ///<summary>
  38. ///对应的配置文件
  39. ///</summary>
  40. publicConfigurationConfiguration
  41. {
  42. get{returnconfig;}
  43. set{config=value;}
  44. }
  45. ///<summary>
  46. ///构造函数
  47. ///</summary>
  48. ///<paramname="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
  49. publicConfigurationOperator(ConfigTypeconfigType)
  50. {
  51. this.configType=configType;
  52. if(configType==ConfigType.ExeConfig)
  53. {
  54. configPath=Application.ExecutablePath;//AppDomain.CurrentDomain.BaseDirectory;
  55. }
  56. else
  57. {
  58. configPath=HttpContext.Current.Request.ApplicationPath;
  59. }
  60. Initialize();
  61. }
  62. ///<summary>
  63. ///构造函数
  64. ///</summary>
  65. ///<paramname="path">.config文件的位置</param>
  66. ///<paramname="type">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
  67. publicConfigurationOperator(stringconfigPath,ConfigTypeconfigType)
  68. {
  69. this.configPath=configPath;
  70. this.configType=configType;
  71. Initialize();
  72. }
  73. //实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法
  74. privatevoidInitialize()
  75. {
  76. //如果是WinForm应用程序的配置文件
  77. if(configType==ConfigType.ExeConfig)
  78. {
  79. config=System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath);
  80. }
  81. else//WebForm的配置文件
  82. {
  83. config=System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath);
  84. }
  85. }
  86. ///<summary>
  87. ///添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值
  88. ///</summary>
  89. ///<paramname="key">节点名称</param>
  90. ///<paramname="value">节点值</param>
  91. publicvoidAddAppSetting(stringkey,stringvalue)
  92. {
  93. AppSettingsSectionappSetting=(AppSettingsSection)config.GetSection("appSettings");
  94. if(appSetting.Settings[key]==null)//如果不存在此节点,则添加
  95. {
  96. appSetting.Settings.Add(key,value);
  97. }
  98. else//如果存在此节点,则修改
  99. {
  100. ModifyAppSetting(key,value);
  101. }
  102. }
  103. ///<summary>
  104. ///添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值
  105. ///</summary>
  106. ///<paramname="key">节点名称</param>
  107. ///<paramname="value">节点值</param>
  108. publicvoidAddConnectionString(stringkey,stringconnectionString)
  109. {
  110. ConnectionStringsSectionconnectionSetting=(ConnectionStringsSection)config.GetSection("connectionStrings");
  111. if(connectionSetting.ConnectionStrings[key]==null)//如果不存在此节点,则添加
  112. {
  113. ConnectionStringSettingsconnectionStringSettings=newConnectionStringSettings(key,connectionString);
  114. connectionSetting.ConnectionStrings.Add(connectionStringSettings);
  115. }
  116. else//如果存在此节点,则修改
  117. {
  118. ModifyConnectionString(key,connectionString);
  119. }
  120. }
  121. ///<summary>
  122. ///修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值
  123. ///</summary>
  124. ///<paramname="key">节点名称</param>
  125. ///<paramname="value">节点值</param>
  126. publicvoidModifyAppSetting(stringkey,stringnewValue)
  127. {
  128. AppSettingsSectionappSetting=(AppSettingsSection)config.GetSection("appSettings");
  129. if(appSetting.Settings[key]!=null)//如果存在此节点,则修改
  130. {
  131. appSetting.Settings[key].Value=newValue;
  132. }
  133. else//如果不存在此节点,则添加
  134. {
  135. AddAppSetting(key,newValue);
  136. }
  137. }
  138. ///<summary>
  139. ///修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值
  140. ///</summary>
  141. ///<paramname="key">节点名称</param>
  142. ///<paramname="value">节点值</param>
  143. publicvoidModifyConnectionString(stringkey,stringconnectionString)
  144. {
  145. ConnectionStringsSectionconnectionSetting=(ConnectionStringsSection)config.GetSection("connectionStrings");
  146. if(connectionSetting.ConnectionStrings[key]!=null)//如果存在此节点,则修改
  147. {
  148. connectionSetting.ConnectionStrings[key].ConnectionString=connectionString;
  149. }
  150. else//如果不存在此节点,则添加
  151. {
  152. AddConnectionString(key,connectionString);
  153. }
  154. }
  155. ///<summary>
  156. ///保存所作的修改
  157. ///</summary>
  158. publicvoidSave()
  159. {
  160. config.Save();
  161. }
  162. }
  163. }

用法实例:
(一)WebForm中的用法

  1. ConfigurationOperatorco=newConfigurationOperator(ConfigType.WebConfig);
  2. stringkey=txtConnectionStringKey.Text;
  3. stringvalue=txtConnectionStringValue.Text;
  4. co.AddConnectionString(key,value);
  5. co.Save();

(二)WinForm中的用法

  1. ConfigurationOperatorco=newConfigurationOperator(ConfigType.ExeConfig);
  2. co.AddAppSetting("Font-Size","9");
  3. co.AddAppSetting("WebSite","http://blog.csdn.net/zhoufoxcn");
  4. co.AddConnectionString("Connection","test");
  5. co.Save();//保存写入结果

我在WinForm里加入了一个空白的app.config文件,经过上面的操作得到如下结果(这个文件是和最后生成的exe文件在同一个目录下,而不是和源代码在同一文件夹下的那个config文件):

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <configuration>
  3. <appSettings>
  4. <addkey="Font-Size"value="9"/>
  5. <addkey="WebSite"value="http://blog.csdn.net/zhoufoxcn"/>
  6. </appSettings>
  7. <connectionStrings>
  8. <addname="Connection"connectionString="test"/>
  9. </connectionStrings>
  10. </configuration>

经过这个封装类可以简化对config配置文件的操作,仅仅是需要在实例化Configuration类的实例时指明打开的是网站还是应用程序的config文件,并且在进行了所有修改和增加操作之后调用Save()方法保存所做的修改即可。需要注意的是:要想把上面的程序作为类库编译,需要添加对System.Web.dll和System.Windows.Forms.dll和System.Configuration.dll类库的引用。

分享到:
评论

相关推荐

    asp.net2.0中对config文件的操作方法总结

    在.net编程中,我们经常用到config文件来保存一些常用的应用程序配置信息,在WinForm中这个文件名字是app.config,在asp.net中叫web.config。这个.config文件其实就是一个xml文件,对它的读操作微软已经提供了一个类...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    5.4.4 对Web.Config文件进行读写操作 5.4.5 加密和解密Web.Config文件的配置节 5.4.6 ASP.NET网站管理工具 5.4.7 ASP.NET MMC管理单元 5.5 本章小结 第6章 数据源控件 6.1 SqlDataSource数据源控件 6.2 ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    内容简介回到顶部↑本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合...

    .NET 2.0 网站系统安全开发手册

    手册基于.NET 2.0 的网站系统开发环境进行编写,共分为十三大项,30个小项,介绍了输入验证、输出编码、SQL注入、跨站脚本攻击、跨站请求伪造、越权操作、IO操作安全、缓存泄漏、系统加密、信息批漏、日志和监测、...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

    spring.net中文手册在线版

    17.6.2.在.NET 2.0中执行回调 17.6.3. .NET 1.1 17.6.4.AdoTemplate方法指南 17.7.异常翻译 17.8.参数管理 17.8.1. IDbParametersBuilder 17.8.2. IDbParameters 17.9. Mapping DBNull values 17.10. Basic data ...

    asp.net知识库

    ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题转换 ASP.NET2.0 ObjectDataSource的使用详解(1) ASP.NET...

    在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider

    ASP.NET 2.0的site map是建立在provider模式的基础上的,因此我们可以创建一个自定义的site map provider,从数据库或某个层来获取数据。本文就详解介绍如何自定义的site map provider动态的获取数据,替代先前通过...

    asp.net学习积累的代码段

    在.NET中利用XMLHTTP下载文件.txt 在ASP.NET中实现POST发送数据.txt 在IE浏览器中使用Windows窗体控件.txt 在SQL Server中保存和输出任意类型的文件.txt 怎么在Web.Config里写Sql Server连接字符串?.txt 正则表达式...

    新闻管理系统(asp.net)

    解决办法:打开IIS(即Internet信息管理器),在已安装的网站名称上边点击右键,选择属性,切换到Asp.net选项卡,察看ASP.Net version(即Asp.net版本)的选项是否为空,如果为空请从下拉列表选择2.0.50727版本或更高...

    ASP.NET图书馆B/S系统

    系统基础代码应用了PetShop系统设计中的反射机制和抽象工厂方法模式,生成的基础类库包括Model对象实体类,封装操作数据库的类和函数的程序集DBUtility,数据访问层的接口程序集IDAL,访问SQL Server数据库,实现...

    亮剑.NET深入体验与实战精要2

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    博易博客 多用户博客程序

    博易的模板机制是基于.Net2.0的MasterPage的,这样,开发一套新的主题模板只需要修改3~5个文件即可完成!与此同时,博易有专业的设计师为您免费提供更多的个性主题!此外,博易还支持识别移动设备(如手机等)。能...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    1.2.2 ASP.NET2.0 1.2.3 ASP.NET3.5 1.2.4 ASP.NET4 1.2.5 Silverlight 1.3 总结 第2章 Visual Studio 2.1 Visual Studio 2.1.1 网站和Web项目 2.1.2 创建无项目文件的网站 2.1.3 设计网页 2.2...

    ASP.NET代码生成器

    1、能够生成三层模式操作的所有后台代码,简单的SQL Server 2005数据库操作。 2、生成的代码包括了 MODEL、BLL、DAL、SQLHelper、Config 生成的代码内有详细注释可提供参考。 3、提供数据库增、删、改、查、...

    ASP.NET4高级程序设计(第4版) 3/3

    1.2.2 ASP.NET2.0 9 1.2.3 ASP.NET3.5 10 1.2.4 ASP.NET4 12 1.2.5 Silverlight 14 1.3 总结 15 第2章 Visual Studio 16 2.1 Visual Studio 16 2.1.1 网站和Web项目 17 2.1.2 创建无项目文件的...

    Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案

    2、urlMappings是ASP.NET2.0内置支持的URL重写配置块,它应该包含在web.config的配置块中。但是,这个内置的URL重写支持不支持正则表达式,因而只能用来实现一对一的路径和页面的重写。urlMappings的配置内容包含在...

    亮剑.NET深入体验与实战精要3

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

Global site tag (gtag.js) - Google Analytics