为什么在 ASP.NET Core 9 Web API 中成功建立连接后出现错误?

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

我有一个使用 SQL Server 2019 的 ASP.NET Core 9 Web API 项目,连接字符串在

appsettings.json
中定义,如下所示:

"AllowedHosts": "*",
"ConnectionStrings": {
    "DefaultConnection": "Data Source = .; initial Catalog = serverAPI9; Trusted_Connection = true" }
}

此外,连接是在

Program.cs
中配置的,如下所示:

builder.Services.AddDbContext<DataContext>(options =>
{
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));
});

执行

POST
操作时,
_context.SaveChangesAsync();
方法会抛出以下错误:

Microsoft.Data.SqlClient.SqlException (0x80131904):已成功与服务器建立连接,但在登录过程中发生错误。 (提供商:SSL 提供商,错误:0 - 证书链由不受信任的机构颁发。)

System.ComponentModel.Win32Exception (0x80090325):证书链是由不受信任的机构颁发的。

如何解决这个问题?

sql-server asp.net-core-webapi asp.net-core-9.0
1个回答
0
投票

这是 .NET 7 次的重大更改 - 对于 SQL Server 连接,

Encrypt
默认为
true
:

SqlClient 连接字符串默认使用

Encrypt=True
。这意味着:

  • 服务器必须配置有效的证书
  • 客户端必须信任此证书

来自文档的缓解措施部分:

可通过三种方式进行:

  1. 在服务器上安装有效的证书。请注意,这是一个复杂的过程,需要获取证书并确保它由客户端信任的机构签名。
  2. 如果服务器有证书,但客户端不信任它,则
    TrustServerCertificate=True
    允许绕过正常的信任机制。
  3. Encrypt=False
    显式添加到连接字符串。
© www.soinside.com 2019 - 2024. All rights reserved.