C#读取App.config配置文件详解及代码实例

码头散步
码头散步
发布时间:2026-10-14| 3人浏览过
原创

在C#开发WinForm程序时,App.config用于存储应用程序配置信息,如数据库连接字符串和自定义键值对。本文解析App.config的XML结构,并通过System.Configuration命名空间的类库,提供遍历connectionStrings和appSettings节点以及直接读取特定配置项的代码范例。

App.config文件结构与特点

App.config本质上是XML格式的文档。对于Windows桌面应用(WinForm/WPF),使用此文件;而Web应用程序则对应使用Web.config,两者的语法格式一致。其核心结构包含以下关键部分:

  • <configuration>:根元素,所有配置项均位于此标签之下。
  • <connectionStrings>:系统内置节点,专门用于存放数据库连接字符串。该节点下可包含多个<add>子节点,每个子节点定义一个具体的连接。
  • <appSettings>:通用的键值对容器,用于存储任意需要硬编码到配置中的参数。早期版本中常将其用于存储连接字符串,但现代开发更推荐将连接字符串移至专用的connectionStrings节点。

以下是一个标准的App.config内容示例:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <connectionStrings>
  <add name="conn" connectionString="this is connection string"/>
 </connectionStrings>
 <appSettings>
  <add key="key1" value="value1" />
  <add key="key2" value="value2" />
 </appSettings>
</configuration>

C#读取配置文件操作准备

要在C#代码中访问App.config,必须确保项目中引用了System.Configuration程序集。在Visual Studio中,可以通过“解决方案资源管理器”右键点击“引用”添加该引用。同时在代码顶部引入相应的命名空间:

using System.Configuration;

主要使用的类是ConfigurationManager,它提供了静态属性ConnectionStrings和AppSettings来分别映射配置文件的两个主要节点。

第1步:读取与遍历连接字符串 (connectionStrings)

目的:获取已配置的所有数据库连接字符串及其名称。 入口:ConfigurationManager.ConnectionStrings,返回类型为ConnectionStringSettingsCollection。

可以通过索引器循环或LINQ风格的遍历来获取数据。具体操作如下:

// 方法一:按索引循环
for (int i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++)
{
  string name = ConfigurationManager.ConnectionStrings[i].Name;
  string connectionString = ConfigurationManager.ConnectionStrings[i].ConnectionString;
  Console.WriteLine(i.ToString() + ". " + name + " = " + connectionString);
}

// 方法二:foreach遍历
foreach (ConnectionStringSettings conn in ConfigurationManager.ConnectionStrings)
{
  Console.WriteLine(conn.Name + " = " + conn.ConnectionString);
}

完成状态判断:控制台输出所有配置的连接名称和对应的字符串内容。

第2步:直接获取指定连接字符串

目的:当明确知道连接字符串的名称时,直接获取其值,无需遍历。 动作:使用索引器传入名称字符串。参数:连接字符串的name属性。

// 直接获取名为 "conn" 的连接字符串
if (ConfigurationManager.ConnectionStrings["conn"] != null)
{
  string connStr = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
  Console.WriteLine("Get the value of the node named 'conn': " + connStr);
}

注意:若配置文件中不存在指定名称的连接字符串,索引器会抛出异常,建议在读取前进行非空判断或使用Try模式封装。

第3步:读取与遍历 appSettings

目的:获取通用配置项(Key-Value)列表。 入口:ConfigurationManager.AppSettings,返回类型为NameValueCollection。

由于NameValueCollection没有直接的枚举接口支持foreach,通常通过AllKeys属性获取所有键名数组,然后迭代取值:

string[] keys = ConfigurationManager.AppSettings.AllKeys;
for (int i = 0; i < keys.Length; i++)
{
  string key = keys[i];
  // 通过Key获取对应的Value
  string value = ConfigurationManager.AppSettings[key];
  Console.WriteLine(i.ToString() + ". " + key + " = " + value);
}

第4步:直接获取指定 appSettings 值

目的:快速读取某个特定的配置键值。 动作:使用索引器传入Key字符串。

// 直接获取 key1 的值
string val = ConfigurationManager.AppSettings["key1"];
Console.WriteLine("Get the value of the key named 'key1': " + val);

编译与运行注意事项

App.config并非直接在运行时读取源码文件,而是在项目编译后,由构建系统将App.config的内容合并生成到输出目录下的应用程序名.exe.config文件中。因此,调试或发布时,请确保读取路径指向正确的输出目录(如bin\Debug)。如果配置项需要在运行时动态修改并保存,通常涉及对.config文件的读写权限管理,但在大多数只读场景下,上述读取方式已足够。

以上就是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 算法库。