.NET Core 3.1简单控制台应用从appsettings.json获取连接字符串返回null求助
控制台应用读取appsettings.json连接字符串问题修复
核心问题定位
- 配置节名拼写不匹配:你代码中写的节名
ConnectionsStrings(在Connection后多拼接了一个s),和appsettings.json里定义的顶级节名ConnectionStrings存在拼写差异。配置系统对键名是严格精确匹配的,节名不匹配会直接读取不到对应配置,返回null。 - 取值逻辑错误:即使节名拼写正确,你当前代码获取到的是
IConfigurationSection配置节对象,而非对应的字符串值,需要显式提取节的.Value属性,或使用官方提供的专用扩展方法获取连接字符串。 - 路径匹配缺失:控制台应用不会自动定位配置文件所在路径,未指定基础路径的情况下,可能根本找不到appsettings.json文件(你设置了
optional: true,文件不存在时也不会抛出异常,只会返回空配置,所有值为null)。
修复后的完整实现
1. 修正配置构建逻辑
using System.IO; using Microsoft.Extensions.Configuration; public static IConfigurationRoot GetConfiguration() { // 指定配置文件的基础路径为程序当前运行目录 var basePath = Directory.GetCurrentDirectory(); var builder = new ConfigurationBuilder() .SetBasePath(basePath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); return builder.Build(); }
2. 修正配置取值逻辑
static void Main() { var configuration = GetConfiguration(); // 使用官方内置的GetConnectionString扩展方法,自动匹配约定的ConnectionStrings节,避免手动拼写节名出错 var connectionString = configuration.GetConnectionString("DbName"); }
额外注意事项
需要在Visual Studio中选中appsettings.json文件,将属性面板里的「复制到输出目录」设置为「如果较新则复制」,确保配置文件会随程序一起输出到运行目录,不会出现文件找不到的问题。
内容的提问来源于stack exchange,提问作者rubidge96
相关产品推荐
相关产品推荐

