C#操作App.config或Web.config文件的读写方法

Oliver
Oliver
发布时间:2026-10-14| 6人浏览过
原创

在开发Windows桌面应用或传统.NET Web应用时,常需动态管理应用配置。本文详细说明如何使用C#标准库读写app.config或web.config中的键值对,涵盖读取、写入及配置刷新的完整流程,帮助开发者避免硬编码,提升应用灵活性。

准备条件与注意事项

操作配置文件前,请确保项目中已添加对 System.Configuration 程序集的引用。此外,需注意以下限制:

  • 写入操作针对的是项目生成的配置文件(通常在 Bin 目录下的 *.exe.config 或 web.config),而非源码中的设计时配置文件。
  • 若应用以只读方式运行(如安装在保护目录下),写入操作可能因权限不足而失败。建议先在本地调试环境测试。
  • ConfigurationManager.AppSettings 用于快速读取,但无法直接保存修改;保存修改需使用 Configuration 对象。

第一步:读取配置项值

目的:快速获取指定 key 对应的 value。这是最常用的操作,无需持久化上下文。

入口:使用静态类 ConfigurationManager。

动作说明:调用 AppSettings[key] 即可返回字符串形式的值。若 key 不存在,通常返回 null 或抛异常,建议在访问前判断是否存在。

internal string GetConfigValue(string key)
{
    // 建议使用 try-catch 或检查 ContainsKey 防止 KeyNotFoundException
    if (System.Configuration.ConfigurationManager.AppSettings.AllKeys.Contains(key))
    {
        return System.Configuration.ConfigurationManager.AppSettings[key];
    }
    return null;
}

完成状态:函数返回目标配置项的字符串值,或 null。

第二步:写入并保存配置项值

目的:修改特定配置项的值并将其持久化到磁盘上的 .config 文件中。

入口:使用 ConfigurationManager.OpenExeConfiguration 获取当前应用程序的配置对象。

动作说明:

  1. 打开配置:通过 OpenExeConfiguration(ConfigurationUserLevel.None) 获取关联的可执行文件配置文件实例。
  2. 修改值:访问 config.AppSettings.Settings[key].Value 并赋值新值。
  3. 保存配置:调用 config.Save(ConfigurationSaveMode.Modified) 将更改写回磁盘。
  4. 刷新内存缓存:调用 ConfigurationManager.RefreshSection("appSettings"),确保后续读取能获取最新值,因为 .NET 默认会缓存 appSettings 部分。
internal void SetConfigValue(string key, string val)
{
    // 1. 获取配置文件路径下的 Configuration 对象
    System.Configuration.Configuration config = 
        System.Configuration.ConfigurationManager.OpenExeConfiguration(
            ConfigurationUserLevel.None);

    // 2. 设置新值。如果 Key 不存在,此操作可能会抛出异常,实际生产中应先检查或添加
    if (config.AppSettings.Settings[key] != null)
    {
        config.AppSettings.Settings[key].Value = val;
    }
    else
    {
        // 可选:如果 Key 不存在,创建新项
        config.AppSettings.Settings.Add(key, val);
    }

    // 3. 保存更改到磁盘
    config.Save(ConfigurationSaveMode.Modified);

    // 4. 刷新 appSettings 节,使当前进程立即生效
    System.Configuration.ConfigurationManager.RefreshSection("appSettings");
}

完成状态:磁盘上的 .config 文件已更新,且当前内存中的配置缓存已刷新。

第三步:调用示例与结果验证

以下代码演示如何组合使用上述方法进行实际应用。请注意,写入测试后,建议查看 Bin 目录下生成的配置文件确认更改是否生效。

// 示例:将 "IsInit" 设置为 true
SetConfigValue("IsInit", "true");

// 示例:再次读取,应返回 "true"
string result = GetConfigValue("IsInit");
Console.WriteLine($"Updated Value: {result}"); // 输出: Updated Value: true

完成判断:控制台输出预期的新值,且对应 .config 文件中 <add key="IsInit" value="true"/> 已持久化保存。

排错指南

若在执行写入操作时遇到问题,请检查:

  • 文件被占用或只读:确保没有其他进程(如正在运行的程序本身)锁定了该配置文件。可在非运行状态下编辑或使用管理员权限运行应用进行测试。
  • 路径错误:OpenExeConfiguration 默认定位当前程序启动目录下的 .config 文件。若应用在特殊路径运行,需确认物理路径是否正确。
  • 未刷新导致读取旧值:务必在保存后调用 RefreshSection,否则下一次 AppSettings[key] 读取仍可能返回旧缓存值。

简要总结

通过 ConfigurationManager 可以简便地读取配置,而结合 Configuration 对象则能实现完整的读写循环。掌握这一机制,能有效管理应用运行时的参数配置,避免频繁修改代码或重启服务。以上就是 C# 操作 App.config 配置文件的详细内容,更多关于 C# 配置文件管理的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。