C# 读取与修改 AppSettings 配置文件的实例讲解
在 C# 开发中,经常需要动态读取或修改应用程序的配置文件(如 app.config 或 web.config)。本文将演示如何借助 System.Configuration 命名空间中的 ConfigurationManager 类,实现对 AppSettings 节点的读写操作。
准备工作与依赖引用
要操作 .NET Framework 下的配置文件,首先需要确保项目中添加了相关的引用:
- 程序集引用:在 Visual Studio 的解决方案资源管理器中,右键点击“引用” → “添加引用”,勾选
System.Configuration。 - 代码引入:在源文件顶部添加
using System.Configuration;语句。
第一步:读取配置项
目的是从配置文件中获取指定 Key 对应的 Value 值。
- 入口:
ConfigurationManager.AppSettings - 动作:通过索引器传入配置项的 Key 名称。
- 参数:Key 为字符串类型。
- 完成状态:返回对应的字符串值,若未找到该 Key 则返回 null。
// 读取 InitMapPath 的值
string value = ConfigurationManager.AppSettings["InitMapPath"];
第二步:写入并保存配置项
目的是修改配置节点中的特定 Key 的值,并将更改持久化到磁盘文件。此操作通常用于程序首次运行设置默认路径或用户更改设置后保存场景。
- 打开配置文件:使用
OpenExeConfiguration方法获取当前程序的配置对象。
参数说明:ConfigurationUserLevel.None表示操作非用户级的通用配置(即 exe 同目录下的配置文件)。 - 修改 Value:访问
cfa.AppSettings.Settings集合,根据 Key 赋值。 - 保存配置:调用
Save方法将更改写回文件。 - 刷新内存:由于进程启动时已加载配置,直接读取可能仍为旧值,需调用
RefreshSection强制重新加载。
// 1. 打开配置文件对象
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// 假设这是需要更新的新地址或路径
string addrService = "https://new.service.com";
string mapPath = "/data/map";
// 2. 执行条件判断与赋值
if (addrService != "")
{
// 注意:实际生产环境中建议先检查 Key 是否存在,避免抛出异常
if (cfa.AppSettings.Settings["WebServiceUrl"] != null)
{
cfa.AppSettings.Settings["WebServiceUrl"].Value = addrService;
}
}
if (mapPath != "")
{
if (cfa.AppSettings.Settings["InitMapPath"] != null)
{
cfa.AppSettings.Settings["InitMapPath"].Value = mapPath;
}
}
// 3. 保存修改到磁盘文件
cfa.Save(ConfigurationSaveMode.Modified);
// 4. 刷新内存中的配置缓存,确保后续读取生效
ConfigurationManager.RefreshSection("appSettings");
注意事项与排错
- Key 存在性检查:上述示例简化了逻辑。在实际编码中,
cfa.AppSettings.Settings["KeyName"]如果引用的 Key 不存在,直接赋值可能会引发NullReferenceException。建议在赋值前进行判空处理或使用Add方法。 - 权限问题:写入配置文件通常需要对文件具有写入权限。如果程序安装在受保护的目录(如 Program Files),可能需要以管理员身份运行或在应用数据目录(Application Data)下读写配置。
- Web 项目差异:如果是 ASP.NET Web 项目,通常使用
ConfigurationManager.AppSettings进行只读操作较为常见,动态写配置较少见且需谨慎处理并发覆盖。
总结
通过 ConfigurationManager 类,开发者可以灵活地在运行时管理应用程序的配置信息。掌握其打开、修改、保存及刷新的标准流程,能够避免因配置变更导致的意外行为。以上就是 C# 读取与修改系统配置文件的详细内容,更多关于 C# 配置文件操作的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













