导读:本期聚焦于小伙伴创作的《C#如何读取配置文件?C#读写App.config和Web.config有哪些实用技巧》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何读取配置文件?C#读写App.config和Web.config有哪些实用技巧》有用,将其分享出去将是对创作者最好的鼓励。

在C#应用程序开发中,App.config和Web.config是承载程序运行参数的核心配置文件,前者多用于桌面应用、控制台应用,后者多用于ASP.NET Web应用。合理操作这两类配置文件,能够让程序在不重新编译的情况下调整运行参数,提升项目的灵活性和可维护性。

C#如何读取配置文件?C#读写App.config和Web.config有哪些实用技巧

配置文件的基础结构

无论是App.config还是Web.config,本质都是XML格式的文件,核心配置通常存放在<configuration>根节点下的<appSettings><connectionStrings>节点中。<appSettings>用于存储自定义键值对配置,<connectionStrings>用于存储数据库连接字符串等配置。

一个基础的App.config文件结构如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="ServerIp" value="192.168.0.1"/>
    <add key="MaxRetryCount" value="3"/>
  </appSettings>
  <connectionStrings>
    <add name="DefaultDb" connectionString="Server=127.0.0.1;Database=test;Uid=root;Pwd=123456;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

读取配置文件的常用方法

读取配置文件需要引用System.Configuration命名空间,使用ConfigurationManager类完成操作,该类是.NET框架提供的配置操作核心类。

读取appSettings节点配置

读取<appSettings>下的键值对配置,直接调用ConfigurationManager.AppSettings["键名"]即可,返回值为字符串类型的配置值,如果键不存在则返回null。

示例代码如下:

using System;
using System.Configuration;

namespace ConfigDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 读取ServerIp配置
            string serverIp = ConfigurationManager.AppSettings["ServerIp"];
            // 读取MaxRetryCount配置,不存在则使用默认值3
            string retryCountStr = ConfigurationManager.AppSettings["MaxRetryCount"];
            int retryCount = string.IsNullOrEmpty(retryCountStr) ? 3 : int.Parse(retryCountStr);
            
            Console.WriteLine($"服务器地址:{serverIp}");
            Console.WriteLine($"最大重试次数:{retryCount}");
        }
    }
}

读取connectionStrings节点配置

读取数据库连接字符串需要使用ConfigurationManager.ConnectionStrings["连接名"],返回的是ConnectionStringSettings对象,通过它的ConnectionString属性获取具体的连接字符串。

示例代码如下:

using System;
using System.Configuration;

namespace ConfigDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 读取DefaultDb连接字符串
            ConnectionStringSettings dbConfig = ConfigurationManager.ConnectionStrings["DefaultDb"];
            if (dbConfig != null)
            {
                string connStr = dbConfig.ConnectionString;
                Console.WriteLine($"数据库连接字符串:{connStr}");
            }
        }
    }
}

写入和修改配置文件的技巧

需要注意,ConfigurationManager类本身只支持读取操作,如果需要修改或新增配置,需要通过Configuration对象操作,并且修改后的配置文件会生效,但运行时读取的配置可能不会立即更新,需要根据场景处理。

修改App.config配置

对于控制台或桌面应用,需要获取当前应用的配置文件对象,修改对应节点后调用Save方法保存。

示例代码如下:

using System;
using System.Configuration;

namespace ConfigDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 获取当前应用的配置文件
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            
            // 修改appSettings中的ServerIp配置
            if (config.AppSettings.Settings["ServerIp"] != null)
            {
                config.AppSettings.Settings["ServerIp"].Value = "127.0.0.1";
            }
            else
            {
                // 如果配置不存在则新增
                config.AppSettings.Settings.Add("ServerIp", "127.0.0.1");
            }
            
            // 保存修改并刷新配置
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
            
            Console.WriteLine("配置修改完成");
        }
    }
}

修改Web.config配置

Web应用的操作逻辑类似,但是获取配置的方式略有不同,需要通过WebConfigurationManager类操作,该类位于System.Web.Configuration命名空间下。

示例代码如下:

using System;
using System.Web.Configuration;

namespace WebConfigDemo
{
    public partial class ConfigPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 获取当前Web应用的配置文件
            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
            
            // 修改appSettings中的配置
            if (config.AppSettings.Settings["SiteName"] != null)
            {
                config.AppSettings.Settings["SiteName"].Value = "测试站点";
            }
            else
            {
                config.AppSettings.Settings.Add("SiteName", "测试站点");
            }
            
            // 保存修改
            config.Save();
            // 刷新配置节点
            ConfigurationManager.RefreshSection("appSettings");
        }
    }
}

开发中的实用注意事项

  • 读取配置时建议做非空判断,避免配置键不存在导致空引用异常,同时可以给常用配置设置默认值,提升程序健壮性。
  • 修改配置文件后,一定要调用RefreshSection方法刷新对应配置节点,否则运行时可能读取到旧的配置值。
  • Web.config修改后会触发应用重启,因此不建议在高频率操作的场景中频繁修改Web.config,避免影响应用稳定性。
  • 如果配置中需要存储特殊字符,比如连接字符串中的&符号,需要转义为&,否则会导致配置文件格式错误。
  • 发布程序时,App.config会自动重命名为程序名.exe.config,不要直接修改源App.config,要修改生成目录下的对应config文件。

常见问题解答

为什么读取配置返回null?

首先检查配置文件的键名是否和代码中一致,其次检查配置文件是否放在程序运行目录,App.config需要生成操作设置为“内容”,复制到输出目录设置为“始终复制”。

修改配置后不生效怎么办?

确认是否调用了RefreshSection方法,另外如果是Web应用,修改后应用重启可能会覆盖部分修改,建议将动态配置存储在数据库或其他持久化介质中。

配置文件的读写操作是C#开发的基础技能,掌握上述方法后,能够应对绝大多数配置相关的开发需求,建议在实际项目中根据场景选择合适的配置存储方式,平衡灵活性和性能。

C#App.configWeb.configConfigurationManager读写配置文件修改时间:2026-06-12 02:06:42

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。