C# 如何获取自定义的config中节点的值,并修改节点的值
现定义一个方法 DIYConfigHelper.cs
using System;
using System.Xml;
using System.Configuration;
using System.Reflection;
using System.Web;
using System.IO; namespace Chain.Common
{ /// <summary>
/// Summary description for ReadWriteConfig.
/// </summary>
public class DIYConfigHelper
{
/// <summary>
///
/// </summary>
/// <param name="key">节点名称</param>
/// <returns></returns> /// <summary>
/// 获取自定义 index.config 文件中的 appsetting 节点值
/// flag -1:配置文件不存在 -2::节点不存在
/// </summary>
/// <param name="path">config文件的路径</param>
/// <param name="key">节点名称</param>
/// <returns>节点名称的值</returns>
public static string GetIndexConfigValue(string path, string key)
{
string flag = "";
string indexConfigPath = path;
if (string.IsNullOrEmpty(indexConfigPath))
return flag = "-1";//配置文件为空
if (!File.Exists(indexConfigPath))
return flag = "-1";//配置文件不存在 ExeConfigurationFileMap ecf = new ExeConfigurationFileMap();
ecf.ExeConfigFilename = indexConfigPath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(ecf, ConfigurationUserLevel.None);
try
{
flag = config.AppSettings.Settings[key].Value;
}
catch (Exception)
{
flag = "-2";
}
return flag;
} /// <summary>
/// 设置自定义 index.config 文件中的 appsetting 节点值
/// </summary>
/// <param name="path">config文件的路径</param>
/// <param name="key">节点名称</param>
/// <param name="value">需要修改的值</param>
/// <returns>true:修改成功 false:修改失败</returns>
public static bool SetIndexConfigValue(string path, string key, string value)
{
string indexConfigPath = path;
if (string.IsNullOrEmpty(indexConfigPath))
throw new Exception("请检查应用程序配置文件 appSettings 节点,是否存在 indexConfig 且 value 不为空的配置节!");
if (!File.Exists(indexConfigPath))
throw new Exception(string.Format("配置文件不存在:{0}", indexConfigPath)); ExeConfigurationFileMap ecf = new ExeConfigurationFileMap();
ecf.ExeConfigFilename = indexConfigPath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(ecf, ConfigurationUserLevel.None);
config.AppSettings.Settings[key].Value = value;
config.Save();
return true;
} /// <summary>
/// 给xlm指定的节点添加节点和值
/// </summary>
/// <param name="path">xml文件的路径</param>
/// <param name="key">添加的key值</param>
/// <param name="value">添加的value值</param>
public static void AddIndexConfigValue(string path, string key, string value)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path); //加载xml文件
XmlNode rootXml = xmlDoc.SelectSingleNode("configuration"); //查询XML文件的根节点("siteMapPath")
XmlNodeList xnl = rootXml.SelectNodes("appSettings"); //获取所有节点为"siteMapNode"的节点
foreach (XmlNode xnItem in xnl)
{
XmlElement xe = (XmlElement)xnItem; //将子节点类型转换为XmlElement类型
XmlElement newXE = xmlDoc.CreateElement("add");
newXE.SetAttribute("key", key);
newXE.SetAttribute(@"value", value);
xnItem.AppendChild(newXE);
}
xmlDoc.Save(path);
}
/// <summary>
/// 按xml路径删除指定节点
/// </summary>
/// <param name="path">xml文件路径</param>
/// <param name="key">要删除的节点key值</param>
/// <returns>0:删除失败,1:删除成功,-1:配置文件异常,-2系统异常,</returns>
public static string DeleteIndexConfigValue(string path, string key)
{
string flag = "";
string indexConfigPath = path;
if (string.IsNullOrEmpty(indexConfigPath))
return flag = "-1";//配置文件为空
if (!File.Exists(indexConfigPath))
return flag = "-1";//配置文件不存在 ExeConfigurationFileMap ecf = new ExeConfigurationFileMap();
ecf.ExeConfigFilename = indexConfigPath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(ecf, ConfigurationUserLevel.None);
try
{
config.AppSettings.Settings.Remove(key);
config.Save(ConfigurationSaveMode.Modified);
flag = "";
}
catch (Exception)
{
flag = "-2";//系统异常
}
return flag;
}
}
}
调用方式:
string ss = Chain.Common.DIYConfigHelper.GetIndexConfigValue(HttpRuntime.AppDomainAppPath.ToString() + "DIY.config", "");//获取节点值
bool tt = Chain.Common.DIYConfigHelper.SetIndexConfigValue(HttpRuntime.AppDomainAppPath.ToString() + "DIY.config", "", "");//修改节点值
Chain.Common.DIYConfigHelper.AddIndexConfigValue(HttpRuntime.AppDomainAppPath.ToString() + "DIY.config", "", "");//添加节点和值 string mm=Chain.Common.DIYConfigHelper.DeleteIndexConfigValue(HttpRuntime.AppDomainAppPath.ToString() + "DIY.config", "14");//删除指定值的节点
DIY.config文件的内容
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="" value="663CFB4AF7AE2A91B14587C31B3DE60AF38AED2E63F5040C5D453CBC704162B8ACDD7A7D67A95FA0" />
<add key="" value="156D7DB054ABBF9B321B1E8982130FDA3420475BC524C4259C55A8CEA4F884DE649FD16284A1053F" />
</appSettings>
<connectionStrings />
</configuration>
C# 如何获取自定义的config中节点的值,并修改节点的值的更多相关文章
- iOS开发小技巧--获取自定义的BarButtonItem中的自定义View的方法(customView)
如果BarButtonItem是通过[[UIBarButtonItem alloc] initWithCustomView:(nonnull UIView *)]方法设置的.某些情况下需要修改BarB ...
- 从SuperSocket的App.config中读取配置,并修改保存,再重启服务
string XmlPath = System.Windows.Forms.Application.ExecutablePath + ".config"; XmlDocument ...
- Odoo中的逆计算——由compute字段的值逆向修改其依赖值
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281406.html 当通过compute属性指定方法,根据依赖值计算得到当前字段值时.一般也要制定这个计算的 ...
- 获取或设置config节点值
ExeConfigurationFileMap 这个类提供了修改.获取指定 config 的功能:新建一个 ExeConfigurationFileMap 的实例 ecf :并设置 ExeConfig ...
- 用于获取或设置Web.config/*.exe.config中节点数据的辅助类
1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类 /**//// <summary> /// 用于获取或设置Web.config/*.exe.confi ...
- [asp.net mvc 奇淫巧技] 01 - 封装上下文 - 在View中获取自定义的上下文
我们在asp.net 开发中已经封装了最强大的HttpContext,我们可以在HttpContext中可以获取到几乎任何想获取的东西,也可以在HttpContext写入需要返回客户端的信息.但是这些 ...
- [转]通过继承ConfigurationSection,在web.config中增加自定义配置
本文转自:http://www.blue1000.com/bkhtml/2008-02/55810.htm 前几天写了一篇使用IConfigurationSectionHandler在web.conf ...
- web.config中sessionState节点的配置方案
web.config中sessionState节点的配置方案 web.config关于sessionState节点的配置方案,sessionState有五种模式:Custom,off,inProc,S ...
- web.config中<customErrors>节点
错误提示: “/”应用程序中的服务器错误.------------------------------------------------------------------------------- ...
随机推荐
- docker 系列 - Dock高阶知识点文章汇集
docker 技术已经研究了一段时间, 基本的知识点和使用场景比较清楚了, 还有一些比较高阶的内容未曾尝试, 将来工作中如果能用到, 再深入研究吧. 这篇博文汇总了一些有用的文章链接. ======= ...
- MySQL的一些基本命令笔记(2)
1.逻辑运算符的补充 between 的用法:(在....之间) select column1,column2,......columnN from 表名 where columnX between ...
- ssh免密登录及去掉提示
A连B 1.生成公钥和私钥 ssh-keygen2.复制公钥到需要免密登录的服务器上 ssh-copy-id root@192.168.25.175 A连A 2.复制公钥到本机上 ssh-c ...
- Matconvnet环境配置一些坑
1.先安装VS再安装matlab否则安装失败 2.cuda7.5支持MATLABR2016a/b,支持VS2013但是不支持VS2015 3.cuda8.0支持MABTLABR2017a,对应编译需V ...
- luogu P3338 [ZJOI2014]力
传送门 首先化简原式\[F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2},E_j=F_j/q_j\ ...
- 第26月第26天 Domain=AVFoundationErrorDomain Code=-11850
1. curl -voa http://119.29.108.104:8080/inweb01/kotlin.mp4 -H "Range:bytes=0-1" https://al ...
- 牛客寒假训练营3 B 处女座的比赛资格(拓扑排序+最短路)
题目链接 这个题,一眼看上去就是最短路的题,边权有负环显然不能用dij,然后出题人又卡了spfa,,那怎么办的想点办法啊,好像还有一个拓扑排序可以求最短路吧,这时候正解就已经得到了,就是拓扑排序求最短 ...
- DOM操作插入新的子节点
appendChid.insertBefore首先这两个方法都是添加子节点. append(追加),appendChid:给父节点的子节点末尾添加子节点. insertBefore(newNode, ...
- Spring Boot Endpoint
Spring Boot 的 Endpoints 带着强烈的 DevOps 色彩, “you build it, you run it” ,开发不仅要关心如何实现功能,还需要关心服务在线上运行的状态,如 ...
- Django学习手册 - ORM - ImageField数据类型
前置步骤 setting.py文件配置: 添加app目录 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'djan ...