如何修复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中硬编码配置逻辑,而是在项目启动时通过依赖注入注册并配置:
- 修改
ApplicationDbContext,添加接受DbContextOptions的构造函数:
using Microsoft.EntityFrameworkCore; public class ApplicationDbContext : DbContext { public DbSet<Login> Logins { get; set; } // 供依赖注入使用的构造函数 public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } }
- 在
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
相关产品推荐
相关产品推荐

