我正在创建 ASP.NET Core 6 Web API (VS 2022),并通过 swagger ui 执行任何控制器 API 都会导致连接到 SQL Server 错误。遵循 本教程,但在 .NET 6 中实现。
部分错误日志:
Entity Framework Core 6.0.7 使用提供程序“Microsoft.EntityFrameworkCore.SqlServer:6.0.7”初始化“CommanderContext”,选项:无
失败:Microsoft.EntityFrameworkCore.Database.Connection[20004]使用服务器“localhost”上的数据库“CommanderDB”连接时发生错误。
失败:Microsoft.EntityFrameworkCore.Query[10100]
迭代上下文类型“Commander.Data.CommanderContext”的查询结果时发生异常。
Microsoft.Data.SqlClient.SqlException (0x80131904): 建立与 SQL Server 的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。
验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:TCP 提供程序,错误:40 - 无法打开到 SQL Server 的连接:无法打开到 SQL Server 的连接)
appsettings.json
中的连接字符串,已与服务器资源管理器数据库属性检查并匹配。检查 SQL Server 是否在配置管理器中运行并且能够在 SSMS 中访问。执行
dotnet ef migrations add
成功连接并创建了表。远程连接已启用。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"CommanderConnection": "Data Source=localhost;Initial Catalog=CommanderDB;User ID=CommanderAPI;Password=1234;"
}
}
使用以下代码连接 Program.cs
:
builder.Services.AddDbContext<CommanderContext>(opt => opt.UseSqlServer(builder.Configuration.GetConnectionString("CommanderConnection")));
builder.Services.AddScoped<ICommanderRepo, SqlCommanderRepo>();
编辑:SQL Server 协议 SS:
启用共享内存和 TCP。