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 节点值
        /// </summary>
        /// <param name="path">config文件的路径</param>
        /// <param name="key">节点名称</param>
        /// <returns>节点名称的值</returns>
        public static string GetIndexConfigValue(string path, string key)
        {
            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);
            return config.AppSettings.Settings[key].Value;
        }

        /// <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;
        }
    }
}

调用方式:

string ss = Chain.Common.DIYConfigHelper.GetIndexConfigValue(HttpRuntime.AppDomainAppPath.ToString() + "DIY.config", "14");
bool tt = Chain.Common.DIYConfigHelper.SetIndexConfigValue(HttpRuntime.AppDomainAppPath.ToString() + "DIY.config", "14", "5");

DIY.config文件的内容

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
     <add key="15" value="663CFB4AF7AE2A91B14587C31B3DE60AF38AED2E63F5040C5D453CBC704162B8ACDD7A7D67A95FA0" />
    <add key="14" value="156D7DB054ABBF9B321B1E8982130FDA3420475BC524C4259C55A8CEA4F884DE649FD16284A1053F" />
  </appSettings>
  <connectionStrings />
</configuration>

原文地址:https://www.cnblogs.com/LoveQin/p/9534615.html

时间: 2024-11-09 06:42:57

C# 如何获取自定义的config中节点的值,并修改节点的值的相关文章

自定义app.config中的section节点以及在运行中的使用

假如现在我们需要在app.config中定义一个如下的节点,我们需要进行怎样的操作? <configSections> <section name="integration.config" type="UtilityComponent.WinService.Utilities.Config.Integration.IntegrationSection, UtilityComponent.WinService"/> </configSec

iOS开发小技巧--获取自定义的BarButtonItem中的自定义View的方法(customView)

如果BarButtonItem是通过[[UIBarButtonItem alloc] initWithCustomView:(nonnull UIView *)]方法设置的.某些情况下需要修改BarButtonItem中自定义View的某些属性,例如显示的文字或者显示的图片. 可以通过BarButtonItem的customView获取自定义的View.

web.config中sessionState节点的配置方案

web.config中sessionState节点的配置方案 web.config关于sessionState节点的配置方案,sessionState有五种模式:Custom,off,inProc,StateServer,SqlServer. 1.Custom模式  会话状态将使用自定义数据存储区来存储会话状态信息. 2.off模式 从字面上就可以看出这个是关闭模式,如果当前页面不需要session的值,为了减少服务器资源,你可以去掉Session的开销. <sessionState mode=

CI获取自定义配置文件中的二维配置数组

CI获取自定义配置文件中的二维配置数组:如:在admin.php配置文件中有如下配置:$config['admin_menu'][] = array( 'name' => '商品管理', 'c' => 'goods', 'a' => 'lists', 'icon'=>' icon-gift', 'item' => array( //商品 0 => array('name' => '商品列表', 'c' => 'goods', 'a' => 'lists

项目文件中含有两个config文件,app.config与app1.config,如何获取app1.config中的配置

想要通过配置文件配置C#前台画面,好奇做了以下测试:在项目中新建了app.config与app1.config两个配置文件,请教一下各位高手如果想从app1.config中读取配置信息应该如何读取?采用ConfigurationManager.AppSettings 属性似乎只能读取到app.config的配置信息. ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = @"D:\

app.config中增加appSettings节点,conn.open时报初始化错误

在app.config中增加appSettings节点后,运行到conn.open时报如下错误: "System.Transactions.Diagnostics.DiagnosticTrace"的类型初始值设定项引发异常." 将configSections节点放到configuration下的第一元素后问题解决,原因未知. app.config改动前: <?xml version="1.0" encoding="utf-8" ?

使用IConfigurationSectionHandler在web.config中增加自定义配置

一. 场景    这里仅举一个简单应用的例子,我希望在web.config里面增加网站的基本信息,如:网站名称,网站版本号,是否将网站暂时关闭等.二. 基本实现方法1. 定义配置节点对应的类:SiteSetting    代码片段:    namespace Tristan.SeeCustomConfig {    public class SiteSetting {        public string SiteName { get; set; }        public string

ztree中获取选中节点下的所有叶子节点

ztree中获取选中节点下的所有叶子节点 var setting = {     data: {         simpleData: {             enable: true        }     },     callback: {         onClick: treenodeClick     } }; //点击树节点,获取节点的所有叶子节点idfunction treenodeClick(event, treeId, treeNode, clickFlag) {

Web.config中rewite 节点引起的500.19错误

刚刚接手一个外包的小项目,客户给了发布后的网站文件和数据库,想在本地搭建一套环境先运行下看看网站原有的效果.数据库还原什么都弄好了,数据库字符串也配置好,部署在本地IIS里面,访问了下,结果看到的是500.19错误. 重新注册了下iis_api也不行.最后看了下webconfig的配置,在  <system.webServer> 节点有有个<rewrite>节点,以前做的项目中从来没有用过这个节点.于是乎谷歌百度,终于找到答案:解决办法就是下载UrlRwite组件安装. Web.c