自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法
最近在编写一个读写自定义配置文件的功能时遇到一个问题,在初始化的时候读入配置显示出来,修改后把配置回存到配置文件,在回存的时候,先移除配置节,再添加,在添加的时候遇到如下的异常:
{"无法添加已属于该配置的 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”异常解决办法的更多相关文章
- [转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法 中午业务说机器不能登录,我通过USM管理界面登录单板的时候发现机器没有僵 ...
- win10应用程序添加到开机启动项的两种解决办法
原文 win10应用程序添加到开机启动项的两种解决办法 在windows10系统中,如果想让应用程序在开机之后自动运行起来,可以怎么做呢? 方法一: 1.首先创建应用程序的快捷方式 找到自己想加入开机 ...
- springboot + 自定义配置文件读取
新建一个配置文件 src\main\resources\resources\config.properties #自定义配置文件 #System Encoding #File Upload Temp ...
- ubuntu系统中添加DNS服务器地址后诡异消失的解决办法
今天查看了一下自己电脑里的ubuntu14.04系统,发现无法上网,于是ping了一下百度,出现unknown host,查了一下/etc/resolv.conf中的DNS地址,却发现我之前的修改被清 ...
- Xcode升级插件失效,与添加插件不小心点击Skip Bundle解决办法
一.当发现升级xcode后,插件不能使用,解决办法如下: 1.查看Xcode的UUID 在终端执行 defaults read /Applications/Xcode.app/Contents/Inf ...
- 编写WCF服务时右击配置文件无“Edit WCF Configuration”(编辑 WCF 配置)远程的解决办法
原文:编写WCF服务时右击配置文件无“Edit WCF Configuration”远程的解决办法 今天在看<WCF揭秘>书中看到作者提出可以在一个WCF Host应用程序的App.Con ...
- Windows10家庭版运行应用提示”管理员已阻止你运行此应用...“的解决办法
win10版本家庭中文版: 运行应用程序报错: 解决办法(亲试): 1.进入”控制面板“--”用户账户“--”用户账户“,选择”更改用户账户控制设置“,选择最后一项,点击”确定“按钮,如下图: 2.按 ...
- django数据库的表已迁移的不能重新迁移的解决办法
django.db.utils.InternalError: (1050, "Table 'tb_content' already exists") mysql数据库在迁移时数据库 ...
- [spring源码学习]三、IOC源码——自定义配置文件读取
一.环境准备 在文件读取的时候,第9步我们发现spring会根据标签的namespace来选择读取方式,联想spring里提供的各种标签,比如<aop:xxx>等应该会有不同的读取和解析方 ...
随机推荐
- 26、Nginx Uwsgi代理
1.Uwsgi代理基本概述 cgi.fastcgi.wsgi.uwsgi python框架 Django是一个开放源代码的web的框架 Flask是一个使用python编写的轻量级web应用框架 2 ...
- centos 7 私有云盘 OwnCloud 安装搭建脚本
#!/bin/bash #Build LAMP Server Conf mysql_secure_installation service mariadb restart systemctl enab ...
- MP4 ISO基础媒体文件格式术语
术语.定义和缩略术语 box 由唯一类型标识符和长度定义的面向对象的构造块(注:在一些标准称为“atom") chunk(块) 一个track连续采样集合 container box 唯一目 ...
- Let's write a framework.
Let's write a framework. create a model var model={a:1,b:'b'} let's create a router, router maps url ...
- Single List Reversion
LeetCode 1. 基于头插法的迭代: public ListNode reverseList(ListNode head) { if(head == null) return null; Lis ...
- poj3208 Apocalypse Someday[数位DP]
数位中出现至少3个连续的'6'的数字(称魔鬼数),询问满足要求的排名k的数. 经典题型.采用试填法. 递推做法:预处理出$i$位数字中满足要求的数(下记为'魔鬼数').对每一位都从0到9试一遍,然而卡 ...
- MyEclipse使用教程——使用DevStyle Icon Designer(二)
[MyEclipse CI 2019.4.0安装包下载] DevStyle主题包括一个Icon Designer,允许您自定义图标.Icon Designer包含在DevStyle主题中,可作为Ecl ...
- nginx第五天
nginx的全局变量 变量 说明 $args 请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2 $content_length HTTP ...
- SQL SERVER 2008 设置字段默认值为当前时间
在某些情况下需要对某条记录添加上时间戳,比如用户注册,需要记录用户的注册时间,在SQL SERVER 2008中可以通过 1. 添加新字段 2. 数据类型设置为smalldatetime 3. 默认值 ...
- DOM 修改与DOM元素
㈠HTML DOM - 修改 修改 HTML = 改变元素.属性.样式和事件. ①创建 HTML 内容 改变元素内容的最简单的方法是使用 innerHTML 属性. 下面的例子改变一个 <p ...