最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常:

{"无法添加已属于该配置的 ConfigurationSection。"}

经过一番搜索在网上找到了问题的原因和解决办法。

造成这个异常的原因是我的自定义的ConfigurationSection已经连接到了System.Configuration.Configuration对象,即在读取配置文件时已经把对象连接到了一个 System.Configuration.Configuration,回写的时候就不能用这个对象了,new 一个新的自定义配置对象就可以解决这个问题了。

//首先加载外部配置
System.Configuration.ExeConfigurationFileMap fm = new ExeConfigurationFileMap();
fm.ExeConfigFilename = file;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fm, ConfigurationUserLevel.None);
Patrol simple = config.GetSection("patrol") as Patrol;
//然后需要New一个对象
Patrol simpleNew = new Patrol();
simpleNew.Shifts.Add(new Shift() { Name = "" });
//保存到本地配置
Configuration configLocal = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (configLocal.Sections.Get("patrol") == null)
{
configLocal.Sections.Add("patrol", simpleNew);//这个地方不能直接用simple,不然会报错“无法添加已属于该配置的 ConfigurationSection”
configLocal.Save(ConfigurationSaveMode.Minimal, true);
ConfigurationManager.RefreshSection("configSections");
//
MessageBox.Show("保存成功!");
}
else
{
MessageBox.Show("已经存在!");
}
//
Patrol simpleLocal = configLocal.GetSection("patrol") as Patrol;
Shift shift = simpleLocal.Shifts[];
string name = shift.Name;

参考

http://www.cnblogs.com/endlock/archive/2010/06/11/1756577.html

自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法的更多相关文章

  1. [转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法

      nf_conntrack: table full, dropping packet  连接跟踪表已满,开始丢包 的解决办法 中午业务说机器不能登录,我通过USM管理界面登录单板的时候发现机器没有僵 ...

  2. win10应用程序添加到开机启动项的两种解决办法

    原文 win10应用程序添加到开机启动项的两种解决办法 在windows10系统中,如果想让应用程序在开机之后自动运行起来,可以怎么做呢? 方法一: 1.首先创建应用程序的快捷方式 找到自己想加入开机 ...

  3. springboot + 自定义配置文件读取

    新建一个配置文件 src\main\resources\resources\config.properties #自定义配置文件 #System Encoding #File Upload Temp ...

  4. ubuntu系统中添加DNS服务器地址后诡异消失的解决办法

    今天查看了一下自己电脑里的ubuntu14.04系统,发现无法上网,于是ping了一下百度,出现unknown host,查了一下/etc/resolv.conf中的DNS地址,却发现我之前的修改被清 ...

  5. Xcode升级插件失效,与添加插件不小心点击Skip Bundle解决办法

    一.当发现升级xcode后,插件不能使用,解决办法如下: 1.查看Xcode的UUID 在终端执行 defaults read /Applications/Xcode.app/Contents/Inf ...

  6. 编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法

    原文:编写WCF服务时右击配置文件无“Edit WCF Configuration”远程的解决办法 今天在看<WCF揭秘>书中看到作者提出可以在一个WCF Host应用程序的App.Con ...

  7. Windows10家庭版运行应用提示”管理员已阻止你运行此应用...“的解决办法

    win10版本家庭中文版: 运行应用程序报错: 解决办法(亲试): 1.进入”控制面板“--”用户账户“--”用户账户“,选择”更改用户账户控制设置“,选择最后一项,点击”确定“按钮,如下图: 2.按 ...

  8. django数据库的表已迁移的不能重新迁移的解决办法

    django.db.utils.InternalError: (1050, "Table 'tb_content' already exists") mysql数据库在迁移时数据库 ...

  9. [spring源码学习]三、IOC源码——自定义配置文件读取

    一.环境准备 在文件读取的时候,第9步我们发现spring会根据标签的namespace来选择读取方式,联想spring里提供的各种标签,比如<aop:xxx>等应该会有不同的读取和解析方 ...

随机推荐

  1. redis事务(转载)

    原文地址:http://blog.csdn.net/hechurui/article/details/49508749 Redis事务 首先,Redis本身是单线程的. redis中的事务(trans ...

  2. Linux perf命令详解及常用参数解析

    perf 相关命令:暂无相关命令 perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找. Perf List利用perf剖析程序性能时,需要指定当前测试的性能时间.性能事件是指在 ...

  3. js 点击不同li 切换颜色

    html <div> <li " onclick='addColor(this.id)'> 会议简介 </li> <li " onclic ...

  4. 使用IDEA搭建一个 Spring + Spring MVC + Mybatis 的Web项目 ( 零配置文件 )

    前言: 除了mybatis 不是零配置,有些还是有xml的配置文件在里面的. 注解是Spring的一个构建的一个重要手段,减少写配置文件,下面解释一下一些要用到的注解: @Configuration  ...

  5. 【Winform-GataGridView】根据DataGridView中的数据内容设置行的文字颜色、背景色 — 根据状态变色

    C#中可以根据每行内容的不同来对DataGridView数据表格控制每行的文字颜色.背景颜色进行不同的设置. 效果如下: 实现: 在DataGridView的RowPrePaint事件中进行行颜色控制 ...

  6. 计算机网络(八),TCP的滑动窗口

    目录 1.RTT和RTO 2.TCP使用滑动窗口做流量控制与乱序重排 3.滑动窗口的基本原理 八.TCP的滑动窗口 TCP头部中的窗口字段:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端 ...

  7. 51 Nod 1134 最长递增子序列(经典问题回顾)

    1134 最长递增子序列  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元 ...

  8. UVA 12063 Zeros and ones 一道需要好好体会的好题

    #include<bits/stdc++.h> #include<stdio.h> #include<iostream> #include<cmath> ...

  9. G. Gangsters in Central City

    给出一棵$1$为根节点的含$n$个节点的树,叶子节点都是房屋,在一个集合里面添加房屋和移除房屋. 每一次添加和移除后,回答下面两个问题. 1.  使得已选房屋都不能从根节点到达,最少需要砍多少条边. ...

  10. 前端性能优化 —— reflow(回流/重排)和repaint(重绘)

    简要:整个在浏览器的渲染过程中(页面初始化,用户行为改变界面样式,动画改变界面样式等)reflow(回流)和repaint(重绘) 会大大影响web性能,尤其是手机页面.因此我们在页面设计的时候要尽量 ...