在.NET应用程序的配置体系中,appSettings和connectionStrings是两个常用的配置节点,二者虽然都用于存储配置信息,但在设计定位和使用场景上存在明显差异,理解这些差异能帮助我们更规范地管理项目配置。

基本定义与设计定位
appSettings是.NET早期就存在的配置节点,主要用于存储应用程序的自定义配置项,比如系统参数、业务开关、第三方接口地址等通用配置信息,其设计定位是存储零散的键值对类型的配置数据。
connectionStrings是专门为数据库连接字符串设计的配置节点,它的出现是为了更规范地管理数据库连接相关的配置,支持为不同的数据库连接定义名称、提供者等信息,方便在项目中统一管理和切换数据库连接。
配置结构差异
appSettings的配置结构非常简单,采用键值对的形式,每个配置项通过key属性定义名称,value属性定义对应的值,示例如下:
<configuration>
<appSettings>
<add key="SystemName" value="后台管理系统"/>
<add key="UploadPath" value="D:upload"/>
<add key="IsOpenLog" value="true"/>
</appSettings>
</configuration>
connectionStrings的配置结构更丰富,除了定义连接字符串的名称和值之外,还可以指定数据提供者,支持配置多个不同的数据库连接,示例如下:
<configuration>
<connectionStrings>
<add name="DefaultConnection"
connectionString="Server=127.0.0.1;Database=testdb;Uid=root;Pwd=123456;"
providerName="System.Data.SqlClient"/>
<add name="LogConnection"
connectionString="Server=127.0.0.1;Database=logdb;Uid=root;Pwd=123456;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
读取方式差异
appSettings的读取方式
在.NET Framework项目中,可以通过ConfigurationManager.AppSettings静态类读取appSettings中的配置,代码示例:
using System.Configuration; string systemName = ConfigurationManager.AppSettings["SystemName"]; string uploadPath = ConfigurationManager.AppSettings["UploadPath"]; bool isOpenLog = bool.Parse(ConfigurationManager.AppSettings["IsOpenLog"]);
在.NET Core及之后的版本中,通常通过依赖注入获取IConfiguration实例来读取,代码示例:
using Microsoft.Extensions.Configuration;
public class TestService
{
private readonly IConfiguration _configuration;
public TestService(IConfiguration configuration)
{
_configuration = configuration;
}
public void ReadConfig()
{
string systemName = _configuration["SystemName"];
string uploadPath = _configuration["UploadPath"];
}
}
connectionStrings的读取方式
.NET Framework项目中通过ConfigurationManager.ConnectionStrings读取,代码示例:
using System.Configuration; string defaultConn = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; string providerName = ConfigurationManager.ConnectionStrings["DefaultConnection"].ProviderName;
.NET Core及之后版本通过IConfiguration读取,代码示例:
using Microsoft.Extensions.Configuration;
public class DbService
{
private readonly IConfiguration _configuration;
public DbService(IConfiguration configuration)
{
_configuration = configuration;
}
public void GetConn()
{
string defaultConn = _configuration.GetConnectionString("DefaultConnection");
// 等价于 _configuration["ConnectionStrings:DefaultConnection"]
}
}
适用场景对比
| 对比维度 | appSettings | connectionStrings |
|---|---|---|
| 存储内容 | 通用自定义配置项 | 数据库连接字符串 |
| 结构复杂度 | 简单键值对 | 支持名称、连接串、提供者多属性 |
| 框架支持 | 通用配置读取 | 部分ORM框架会自动读取该节点配置 |
| 推荐用途 | 系统参数、业务开关、接口地址等 | 所有数据库连接相关配置 |
注意事项
- 虽然技术上可以把数据库连接串放到appSettings中,但不推荐这么做,不符合配置节点的设计定位,也不利于后续维护。
- 在.NET Core项目中,如果使用了EntityFrameworkCore等ORM框架,框架默认会优先读取connectionStrings节点中的连接字符串配置,减少额外配置的工作量。
- 敏感配置信息比如数据库密码、接口密钥等,不建议直接明文写在配置文件里,建议结合配置加密或者密钥管理服务使用。
.NETappSettingsconnectionStrings配置文件修改时间:2026-06-28 22:36:30