ASP.NET Core Razor 页面:初始化字符串的错误格式不符合从索引 0 开始的规范

问题描述 投票:0回答:1

我正在使用 Razor 页面编写 ASP.NET Core 项目,首先是数据库。

在 Power Console Manager 中执行

Scaffold-DbContext
命令后,正确创建了类和上下文,并且在运行程序后,从表中正确读取了数据。然后,我将连接字符串从
context
移至
appsettings
,并将连接字符串的名称移至上下文并替换连接字符串,在此步骤之后,一切仍然正常工作。

现在,在通过 SSMS 对表进行更改后,我再次运行

Scaffold-Dbcontext
以接收表的更改,并再次将连接字符串名称更改为上下文,但这一次是在运行程序并读取数据时从表中,我收到以下错误:

系统参数异常

H结果=0x80070057

Message=初始化字符串的格式不符合从索引 0 开始的规范。

总结:当连接字符串处于上下文中(如默认状态)时,它可以正常工作。 但是当我在上下文中保存连接字符串的名称时,遇到数据调用错误

我附上了目前情况的图片,请看一下并告诉我哪里做错了。 🤔

enter image description here

asp.net-core razor-pages asp.net-core-scaffolding
1个回答
0
投票

系统参数异常

H结果=0x80070057

Message=初始化字符串格式不符合 规范从索引 0 开始。

出现此错误通常是因为初始化字符串的格式不符合规范。在您的方法

optionsBuilder.UseSqlServer("connectionstring");
中,直接将“connectionstring”作为连接字符串传递给 UseSqlServer 方法,因此会出现错误。我重现了你的错误:

enter image description here

解决方案:

我们可以将 IConfiguration 对象注入到 DBContext 构造函数中,然后使用 IConfiguration 的

GetConnectionString
方法来获取连接字符串。这里有一个例子你可以参考:

public class WebApplication11Context : DbContext
{
    private readonly IConfiguration _configuration;
    public WebApplication11Context(IConfiguration configuration)
     : base(GetOptions(configuration))
    {
        _configuration = configuration;
    }

    public DbSet<Movie> Movie { get; set; } = default!;

    private static DbContextOptions GetOptions(IConfiguration configuration)
    {
        var optionsBuilder = new DbContextOptionsBuilder<WebApplication11Context>();

        optionsBuilder.UseSqlServer(configuration.GetConnectionString("MyConnectionString"));
        return optionsBuilder.Options;
    }
}

应用程序设置:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "MyConnectionString": "Server=(localdb)\\mssqllocaldb;Database=WebApplication11Context-2372467b-a09c-4c4c-a4c1-3a81bbb6f823;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.