如何通过代码修改App.Config中的自定义嵌套配置?
解决自定义配置节属性修改时的“配置只读”问题
为啥会报错?因为默认通过ConfigurationManager.GetSection获取的配置对象是只读的,直接改属性就会触发这个异常。
解决方法:
- 先拿到可写的配置实例
别再直接用GetSection了,先打开当前应用的配置文件,拿到可写的配置对象:Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // 这里把"ChartSettings"换成你自己的自定义配置节名称 ChartSettingsSection customSection = (ChartSettingsSection)config.GetSection("ChartSettings"); - 修改属性值
现在就能正常改属性了:customSection.ChartName = "新的图表名称"; - 保存更改
改完一定要保存,不然修改不会写到配置文件里,还要刷新配置让后续读取生效:config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("ChartSettings");
注意事项:
- 运行程序的账号得对配置文件有写入权限,不然保存会失败
- 如果是Web项目,得用
WebConfigurationManager.OpenWebConfiguration来获取可写配置对象
内容的提问来源于stack exchange,提问作者Fedor Yudin
相关产品推荐
相关产品推荐

