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

ASP.NET Core连接SQL Server Express时为何出现‘值不能为空’错误?

解决ASP.NET Core连接SQLExpress时的"Value cannot be null"错误

Hey,我刚帮好几个开发者排查过一模一样的问题,这个错误本质上就是configuration.GetConnectionString("DefaultConnection")返回了null,传给UseSqlServer时触发了参数不能为空的校验。咱们一步步来排查:

1. 先检查appsettings.json里的连接字符串配置

这是最常见的问题,你得确保配置文件里确实有ConnectionStrings节点,而且键名精确匹配"DefaultConnection"。SQLExpress的连接字符串格式也要正确,示例如下:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.\\SQLEXPRESS;Database=你的数据库名;Trusted_Connection=True;TrustServerCertificate=True;"
  }
}

注意细节:

  • ConnectionStrings是复数,别写成单数形式
  • 服务器名里的\\是转义后的反斜杠,不能省略
  • 如果你的SQLExpress是自定义命名实例,要改成Server=.\你的实例名(比如.\SQLEXPRESS2022)
  • 加上TrustServerCertificate=True可以避免本地开发时的SSL证书验证问题

2. 确认Startup.cs里的Configuration注入正确

你需要保证Startup类的构造函数已经正确接收IConfiguration,并赋值给类属性,这样后续在ConfigureServices里才能正常读取配置:

using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;

public class Startup
{
    // 必须注入IConfiguration
    public IConfiguration Configuration { get; }

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // 这里才能安全调用Configuration.GetConnectionString
        services.AddDbContext<YourDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        
        // 其他服务注册逻辑...
    }

    public void Configure(IApplicationBuilder app)
    {
        // 中间件配置逻辑...
    }
}

如果你的项目是.NET 6+的最小API(无Startup.cs,用Program.cs),要确保使用builder.Configuration:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();
// 后续应用配置...

3. 排查拼写和大小写问题

虽然Windows系统下配置文件键名大小写不敏感,但最好严格保持一致——比如代码里写的是"DefaultConnection",配置里别写成"defaultconnection"或"Default_Connection",这种小疏漏很容易被忽略。

4. 验证连接字符串是否能正常读取

如果还是不确定问题所在,可以在ConfigureServices里加一行调试代码,输出读取到的连接字符串:

var connString = Configuration.GetConnectionString("DefaultConnection");
Console.WriteLine($"读取到的连接字符串:{connString}");

启动项目后查看控制台输出,如果是null,那肯定是配置没读对;如果有值,再检查这个连接字符串能不能通过SQL Server Management Studio正常连接数据库。

按这几步排查,90%的概率能解决问题。如果还是不行,可以把完整的appsettings.json内容和Startup.cs/Program.cs代码贴出来,我再帮你深挖~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:27:05