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

如何修复ASP.NET Core(C#)应用中的初始化字符串格式错误

错误原因与解决方法

错误原因

你在ApplicationDbContext的OnConfiguring方法中,直接将字符串"DefaultConnection"传给了UseSqlServer方法。但这个字符串只是配置文件中连接字符串的名称,并非实际的连接字符串内容。EF Core会把它当作完整的连接字符串解析,显然不符合SQL Server连接字符串的格式规范,因此抛出格式错误。

解决方法

方法1:通过构造函数注入读取配置(适用于保留OnConfiguring的场景)

修改ApplicationDbContext,注入IConfiguration来读取配置文件中的实际连接字符串:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

public class ApplicationDbContext : DbContext
{
    private readonly IConfiguration _configuration;

    public DbSet<Login> Logins { get; set; }

    // 注入配置对象
    public ApplicationDbContext(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // 读取配置中对应的连接字符串
        optionsBuilder.UseSqlServer(_configuration.GetConnectionString("DefaultConnection"));
    }
}

方法2:在Program.cs中注册DbContext(推荐,符合ASP.NET Core最佳实践)

不在DbContext中硬编码配置逻辑,而是在项目启动时通过依赖注入注册并配置:

  1. 修改ApplicationDbContext,添加接受DbContextOptions的构造函数:
using Microsoft.EntityFrameworkCore;

public class ApplicationDbContext : DbContext
{
    public DbSet<Login> Logins { get; set; }

    // 供依赖注入使用的构造函数
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }
}
  1. 在Program.cs中注册并配置DbContext:
var builder = WebApplication.CreateBuilder(args);

// 注册DbContext并指定连接字符串
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// 其他服务注册、中间件配置...

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

额外检查

确认你的连接字符串本身正确:Data Source=LAPTOP-P08F3TG1/ckary中的实例名ckary是否与你的SQL Server实际实例名称一致,避免因实例名错误导致后续连接失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:14:57