自定义配置文件读取产生的“无法添加已属于该配置的 ConfigurationSection”异常解决办法...
发布日期:2021-08-15 23:44:14 浏览次数:1 分类:技术文章

本文共 1705 字,大约阅读时间需要 5 分钟。

 

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

{"无法添加已属于该配置的 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 = "123" });            //保存到本地配置            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[0];            string name = shift.Name;

 

 

参考

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

转载于:https://www.cnblogs.com/tianciliangen/p/7196716.html

转载地址:https://blog.csdn.net/weixin_30781631/article/details/98070948 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CSS: Float and Clear
下一篇:最常用正则表达式

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年02月29日 01时36分11秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java 底层ppt_Java 如何设置 PPT 中的形状排列方式 具体内容 2019-04-21
mysql service5.7_Mysql5.7服务下载安装 2019-04-21
mysql查看线程完整执行命令_MySQL-查看运行的线程-SHOW PROCESSLIST 2019-04-21
mysql 更新数据 字符串_批量替换 MySQL 指定字段中的字符串 2019-04-21
web开发 mysql安装_mysqlinstallerwebcommunity5.7.21.0.msi安装图文教程 2019-04-21
mysql concat 整数型_MySQL 数字类型转换函数(concat/cast) 2019-04-21
mysql单元格函数是_MySQL常用内置函数 2019-04-21
mysql 怎么字段分裂_你可以分裂/爆炸MySQL查询中的字段吗? 2019-04-21
mysql server卸载出错_Mysql卸载问题Start Server卡住报错解决方法 2019-04-21
全国省市区 mysql_2017全国省市区数据库【含三款数据库】 2019-04-21
mysql 怎样链接jdbc_jdbc怎么链接mysql数据库 2019-04-21
mysql学生课程表试题_Mysql练习之 学生表、课程表 、教师表、成绩表 50道练习题... 2019-04-21
mysql里可以用cube吗_sql server的cube操作符使用详解_mysql 2019-04-21
单片机c语言 int1,51单片机into、int1中断计数c语言源程序.doc 2019-04-21
c语言课程设计工资管理建库,C语言课程设计工资管理系统参考.doc 2019-04-21
c语言case中途跳出,break语句在switch结构语句中的作用是终止某个case,并跳出switch结构语句。... 2019-04-21
c51写c语言外部ram头文件,C51中访问外部RAM的方法 2019-04-21
51c语言产生随机证书,基于51单片机的随机数产生器设计-LCD1602-KEY-(电路图+程序源码)... 2019-04-21
C语言编写程序计算高考倒计时天数,基于51单片机LCD12864大字符校时万年历带高考倒计时程序... 2019-04-21
c语言打开一个html文件路径,C语言文件处理-C语言文件的打开和关闭 2019-04-21