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

ASP.NET Core 6 MVC连接SQL Server失败,ConnectionString未初始化

解决ASP.NET Core 6 MVC连接SQL Server时ConnectionString未初始化的问题

核心问题定位

报错System.InvalidOperationException: The ConnectionString property has not been initialized说明你执行Dapper的QueryFirstOrDefault时,使用的SqlConnection对象未正确赋值连接字符串。

分步排查与修复

1. 确认appsettings.json的连接字符串配置

确保连接字符串格式正确、键名无拼写错误:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=你的服务器地址;Database=你的数据库名;Trusted_Connection=True;TrustServerCertificate=True;"
    // 若使用SQL账号验证:"Server=.;Database=xxx;User Id=sa;Password=xxx;TrustServerCertificate=True;"
  }
}

2. 检查Program.cs的服务注册

若使用Entity Framework Core(DbContext)

确保正确注册DbContext并传入连接字符串:

var builder = WebApplication.CreateBuilder(args);

// 注册DbContext
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// 注册你的Repository(依赖注入用)
builder.Services.AddScoped<UsersRepository>();

var app = builder.Build();
// ...其他中间件配置

若直接使用Dapper(无DbContext)

确保Repository能通过依赖注入获取配置:

// Program.cs中注册Repository
builder.Services.AddScoped<UsersRepository>();

3. 修正UsersRepository的代码

确保创建SqlConnection时传入正确的连接字符串:

public class UsersRepository
{
    private readonly string _connectionString;

    // 通过构造函数注入IConfiguration获取连接字符串
    public UsersRepository(IConfiguration configuration)
    {
        _connectionString = configuration.GetConnectionString("DefaultConnection") 
            ?? throw new ArgumentNullException("未找到配置的ConnectionString");
    }

    public tbUsers GetUser(/* 你的参数 */)
    {
        string SqlQuery = "你的存储过程名";
        var parameters = new DynamicParameters();
        // 给参数赋值...

        // 必须传入连接字符串创建SqlConnection
        using var db = new SqlConnection(_connectionString);
        var result = db.QueryFirstOrDefault<tbUsers>(SqlQuery, parameters, commandType: CommandType.StoredProcedure);
        return result;
    }
}

4. 避免手动实例化DbContext/Repository

不要在代码里直接new AppDbContext()或new UsersRepository(),必须通过依赖注入获取实例,比如在Controller中:

public class UsersController : Controller
{
    private readonly UsersRepository _repo;

    public UsersController(UsersRepository repo)
    {
        _repo = repo;
    }

    // 动作方法中调用_repo的方法
}

常见坑点

  • 连接字符串键名拼写错误(比如把DefaultConnection写成DefualtConnection)
  • Repository构造函数未注入IConfiguration,无法获取连接字符串
  • 创建SqlConnection时忘记传入连接字符串(直接new SqlConnection())
  • 未在Program.cs中注册Repository/DbContext,导致依赖注入失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:40:12