You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Core 2.X读取AppSettings连接字符串的代码在5.0中失效

.NET 5.0 读取连接字符串失败的解决办法

先确认配置文件格式

首先检查你的appsettings.json里的ConnectionStrings节点是否正确,必须是如下结构(注意节点名称大小写和格式):

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.;Database=YourDb;Trusted_Connection=True;",
    "SAPConnection": "你的SAP连接字符串内容"
  }
}

ConnectionStrings是固定的节点名,拼写错误会直接导致GetConnectionString无法找到对应值。

检查Startup构造函数的注入逻辑

如果项目还是使用传统Startup.cs结构,确保构造函数正确接收IConfiguration:

public class Startup
{
    public static string DefaultConnection { get; private set; }
    public static string SAPConnection { get; private set; }

    public Startup(IConfiguration configuration)
    {
        DefaultConnection = configuration.GetConnectionString("DefaultConnection");
        SAPConnection = configuration.GetConnectionString("SAPConnection");
    }

    // 剩余 ConfigureServices、Configure 方法正常编写
}

若仍无法读取,右键appsettings.json → 属性,将「复制到输出目录」设置为「如果较新则复制」或「始终复制」,避免编译后输出目录缺失配置文件。

适配.NET 5的顶级Program.cs模板

多数.NET 5项目采用简化的Program.cs(无Startup类),这种情况需直接在Program中读取配置:

var builder = WebApplication.CreateBuilder(args);

// 直接读取连接字符串
var defaultConn = builder.Configuration.GetConnectionString("DefaultConnection");
var sapConn = builder.Configuration.GetConnectionString("SAPConnection");

// 如需全局使用,可存入静态变量或注入为服务
// 后续服务配置、中间件设置...

var app = builder.Build();
// ...
app.Run();

排查配置覆盖问题

.NET 5按优先级加载配置(环境变量>命令行>用户机密>appsettings.json),若其他配置源覆盖了连接字符串,会导致读取异常。可在构造函数中添加代码打印所有配置项排查:

foreach (var item in configuration.AsEnumerable())
{
    Console.WriteLine($"{item.Key}: {item.Value}");
}

查看输出中是否存在ConnectionStrings:DefaultConnection这类键值对。

其他排查点

  • 检查用户机密(右键项目→管理用户机密)中是否配置了ConnectionStrings,若有会覆盖appsettings.json内容,需确认配置正确性。
  • 确认项目目标框架为.NET 5.0:右键项目→属性→应用→目标框架。

内容的提问来源于stack exchange,提问作者Vimal Upadhyay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:50:21