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

{"无法添加已属于该配置的 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. SecureCRT 连接 Centos7.0 (桥接模式),且能连接公网。

    1.查看本地网络信息 ip:172.20.10.7 2.在VMware下配置Centos为桥接模式: 3.在Centos命令行输入 ip addr 查看Centos的mac地址 网口:eno16777 ...

  2. C语言 STL中qsort用法

    qsort函数包含在<stdlib.h>的头文件里. qsort函数声明如下:void qsort(void *base, size_t nmemb, size_t size, int(* ...

  3. 实验吧flag整理

    奇怪的短信 flagissimple 围在栅栏里的爱ILOVESHIYANBAR. 古典密码flag:CTF{COULDYOUEXCHANGETHEINFORMATION} The Flash-14F ...

  4. oracle 之创建视图异常

    最近在整理的oracle 的时候发现.创建视图 例如: CREATE OR REPLACE VIEW dept_sum_vw(name,minsal,maxsal,avgsal) AS SELECT ...

  5. 修改phpMyAdmin 导入MySQL数据库文件大小限制

    默认情况下,phpMyAdmin导入MySQL数据库文件大小为2M. 很多朋友对网站进行搬家的时候,网站数据进行导入时会出现一些问题,提示超出导入大小限制. 默认MYSQL只能导入最大2MB的数据,于 ...

  6. Centos 7搭建Gitlab服务器以及操作(创建项目,创建群组,创建用户,添加密钥)

    一. 安装并配置依赖包 在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开 系统防火墙中的HTTP和SSH端口访问 安装前准备 命令: ...

  7. k8sJob控制器

    Job控制器用于调配pod对象运行一次性任务,容器中的进程在正常运行结束后不会对其进行重启,而是将pod对象置于completed状态.若容器中的进程因错误而终止,则需要依据配置确定重启与否,未运行完 ...

  8. mybatis 分页插件PageHelper的简单使用

    首先在pom.xml配置文件中增加相关的插件. 插件地址:https://github.com/pagehelper/Mybatis-PageHelper <dependency> < ...

  9. 【转】深入理解Java多态性

    http://developer.51cto.com/art/200906/130414.htm http://blog.csdn.net/cyzero/article/details/7266831 ...

  10. 【SQL-分组合并字符串】把相同分组的某个字段合并为同一个字符串(使用函数)

    场景:我要把同一个订单同一个客户同一个产品分组合并,同时把该产品所有的库位列举出来,合成一个字符串. 原始数据: 我要得到下面的结果: SQL如下: ==先建个方法== create function ...