You need to enable JavaScript to run this app. .NET Core 3.1简单控制台应用从appsettings.json获取连接字符串返回null求助
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 12:36:04