1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Linq;
  5. using System.Net.Mime;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Web;
  9. using System.Xml;
  10. namespace Infrastructure
  11. {
  12. public class WebConfigHelper
  13. {
  14. private Configuration _config;
  15. private readonly string _configPath;
  16. private readonly ConfigType _configType;
  17. /// <summary>
  18. /// 对应的配置文件
  19. /// </summary>
  20. public Configuration Configuration
  21. {
  22. get { return _config; }
  23. set { _config = value; }
  24. }
  25. /// <summary>
  26. /// 构造函数
  27. /// </summary>
  28. public WebConfigHelper()
  29. {
  30. _configPath = HttpContext.Current.Request.ApplicationPath;
  31. Initialize();
  32. }
  33. /// <summary>
  34. /// 构造函数
  35. /// </summary>
  36. /// <param name="configPath">.config文件的位置</param>
  37. /// <param name="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>
  38. public WebConfigHelper(string configPath, ConfigType configType)
  39. {
  40. this._configPath = configPath;
  41. this._configType = configType;
  42. Initialize();
  43. }
  44. //实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法
  45. private void Initialize()
  46. {
  47. //如果是WinForm应用程序的配置文件
  48. if (_configType == ConfigType.ExeConfig)
  49. {
  50. _config = ConfigurationManager.OpenExeConfiguration(_configPath);
  51. }
  52. else //WebForm的配置文件
  53. {
  54. _config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(_configPath);
  55. }
  56. }
  57. public string GetValueByKey(string key)
  58. {
  59. return ConfigurationManager.AppSettings[key];
  60. }
  61. /// <summary>
  62. /// 添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值
  63. /// </summary>
  64. /// <param name="key">节点名称</param>
  65. /// <param name="value">节点值</param>
  66. public void AddAppSetting(string key, string value)
  67. {
  68. var appSetting = (AppSettingsSection)_config.GetSection("appSettings");
  69. if (appSetting.Settings[key] == null) //如果不存在此节点,则添加
  70. {
  71. appSetting.Settings.Add(key, value);
  72. }
  73. else //如果存在此节点,则修改
  74. {
  75. ModifyAppSetting(key, value);
  76. }
  77. }
  78. /// <summary>
  79. /// 修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值
  80. /// </summary>
  81. /// <param name="key">节点名称</param>
  82. /// <param name="newValue">节点值</param>
  83. public void ModifyAppSetting(string key, string newValue)
  84. {
  85. var appSetting = (AppSettingsSection)_config.GetSection("appSettings");
  86. if (appSetting.Settings[key] != null) //如果存在此节点,则修改
  87. {
  88. appSetting.Settings[key].Value = newValue;
  89. }
  90. else //如果不存在此节点,则添加
  91. {
  92. AddAppSetting(key, newValue);
  93. }
  94. }
  95. /// <summary>
  96. /// 添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值
  97. /// </summary>
  98. /// <param name="key">节点名称</param>
  99. /// <param name="connectionString">节点值</param>
  100. public void AddConnectionString(string key, string connectionString)
  101. {
  102. var connectionSetting = (ConnectionStringsSection)_config.GetSection("connectionStrings");
  103. if (connectionSetting.ConnectionStrings[key] == null) //如果不存在此节点,则添加
  104. {
  105. var connectionStringSettings = new ConnectionStringSettings(key, connectionString);
  106. connectionSetting.ConnectionStrings.Add(connectionStringSettings);
  107. }
  108. else //如果存在此节点,则修改
  109. {
  110. ModifyConnectionString(key, connectionString);
  111. }
  112. }
  113. /// <summary>
  114. /// 修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值
  115. /// </summary>
  116. /// <param name="key">节点名称</param>
  117. /// <param name="connectionString">节点值</param>
  118. public void ModifyConnectionString(string key, string connectionString)
  119. {
  120. var connectionSetting = (ConnectionStringsSection)_config.GetSection("connectionStrings");
  121. if (connectionSetting.ConnectionStrings[key] != null) //如果存在此节点,则修改
  122. {
  123. connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;
  124. }
  125. else //如果不存在此节点,则添加
  126. {
  127. AddConnectionString(key, connectionString);
  128. }
  129. }
  130. /// <summary>
  131. /// 保存所作的修改
  132. /// </summary>
  133. public void Save()
  134. {
  135. _config.Save();
  136. }
  137. }
  138. public enum ConfigType
  139. {
  140. /// <summary>
  141. /// asp.net网站的config文件
  142. /// </summary>
  143. WebConfig = 1,
  144. /// <summary>
  145. /// Windows应用程序的config文件
  146. /// </summary>
  147. ExeConfig = 2
  148. }
  149. }
 
 

版权声明:本文为博主原创文章,未经博主允许不得转载。for you!

配置文件——WebApp.config文件读取和修改的更多相关文章

  1. 配置文件——App.config文件读取和修改

    作为普通的xml文件读取的话,首先就要知道怎么寻找文件的路径.我们知道一般配置文件就在跟可执行exe文件在同一目录下,且仅仅在名称后面添加了一个.config 因此,可以用Application.Ex ...

  2. C# app.config文件配置和修改

    很多时候我们需要对系统的.config文件进度读写操作,例如:系统初始化的参数的更改.系统参数的改变都需要更新到配置文件. 首先我们有必要了解一下app.config.exe.config和vshos ...

  3. config 文件读取

    在项目中我们经常要使用到config文件进行相应的配置,来使我们的项目更加灵活健壮. 最常见的就connetionStrings .appSettings这两个节点,那么我们怎么读取呢? 1.首先 我 ...

  4. 关于Npoi+excel文件读取,修改文件内容的处理方式

    因最近有需求场景,实现对文件的读写操作,又不单独生成新的文件,对于源文件的修改,做了一个简单实现,如下↓ // 要操作的excel文件路径 string fileName = Server.MapPa ...

  5. Java代码操作properties文件(读取,新增/修改,删除)

    项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...

  6. C# 修改Config文件,增删查改

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/BYH371256/article/det ...

  7. 在.net中读写config文件的各种方法

    阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collec ...

  8. 在.net中读写config文件的各种方法(自定义config节点)

    http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html 阅读目录 开始 config文件 - 自定义配置节点 config文件 - ...

  9. 在.net中读写config文件的各种方法【转】

    今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场 ...

随机推荐

  1. URAL 2030 Awesome Backup System

    Awesome Backup System Time limit: 2.0 secondMemory limit: 64 MB It is known that all people can be d ...

  2. zf2 中 new Express 的用法

    在使用联表查询时,如查联表条件有多个也可以,但是连接条件在zf2中会自动给列加``符号,所以要加像id = 1 这样的,他自动给1加``就无示执行了,这时候可以使用new Express(''),他里 ...

  3. DELPHI相应鼠标滚轮

    在鼠标的MouseWheel事件里写入以下内容 if WheelDelta < 0 then    SendMessage(scrollBox1.Handle, WM_VSCROLL, SB_L ...

  4. JAVA常用关键字

    Java 中常用关键字: 一一解释(先以印象注明含义,若有错误或未填写的待用到后补充.更新):(蓝色为不确定部分) abstract : 虚类 boolean : 类型定义——布尔型 break : ...

  5. List of devices attached ???????????? no permissions

    如果显示如下:List of devices attached???????????? no permissions就要设置usb $ lsusbBus 005 Device 001: ID 1d6b ...

  6. Linux驱动设计—— 内外存访问

    本节对内外存访问做详细的介绍. 驱动程序加载成功的一个关键因素,就是内核能够为驱动程序分配足够的内存空间.这些空间一部分用于驱动程序必要的数据结构,另一部分用于数据的交换.同时,内核也应该具有访问外部 ...

  7. python--flask使用

    Flask是一个使用 Python 编写的轻量级 Web 应用框架.下面我将使用Flask框架,创建一个简单的html页面示例. 1.项目的目录结构如下所示:exweb\  uniqueenv\  a ...

  8. 二十四种设计模式:原型模式(Prototype Pattern)

    原型模式(Prototype Pattern) 介绍用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象.示例有一个Message实体类,现在要克隆它. MessageModel usin ...

  9. HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginReques ...

  10. oracle的高可用与负载均衡

    浏览了一下Oracle官方的网页以及非官方的ppt,简单了解了一下Oracle提供的高可用方案.1. RACRAC,  Real Application Clusters多个Oracle服务器组成一个 ...