我最近在开发中升级到 Entity Framework Core 7,遇到异常,“已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:SSL 提供程序,错误:0 - )证书链是由不受信任的机构颁发的。)”我正在使用 Microsoft SQL Server Developer(64 位)。我尝试在 VS2022 服务器资源管理器中进行更改以禁用加密并信任服务器证书,我没有安装证书,但异常仍然存在。在开发过程中如何缓解这种情况?
这不是 EF Core 7.0 中的错误,而是安全性的改进。 Microsoft 建议以下 3 种解决方案,无论哪一种都适用于您。
Encrypt=False
添加到连接字符串旧行为 SqlClient 连接字符串默认使用 Encrypt=False。这允许在本地服务器没有有效证书的开发计算机上进行连接。
新行为 SqlClient 连接字符串默认使用 Encrypt=True。这意味着:
服务器必须配置有效的证书 客户端必须信任此证书 如果不满足这些条件,则会抛出 SqlException。例如:
与服务器成功建立连接,但登录过程中出现错误。 (提供商:SSL 提供商,错误:0 - 证书链由不受信任的机构颁发。)
https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/writing-changes
将
Microsoft.EntityFrameworkCore.SqlServer
升级到 7.0.0
后也出现同样的问题
我通过将
TrustServerCertificate=Yes
添加到 SQL Server 连接字符串来解决这个问题。
以下代码适用于.net core 6 & 7
> "ConnectionStrings": {
> "SqlServer": "Data Source=DESKTOP-*****;Initial Catalog=Test;Integrated Security=True;TrustServerCertificate=Yes",
> "LocalSqlProviderEnable": true }
我认为它失败了,因为这是最近的更新。 我遇到了同样的问题,我修复了它并重新安装了以前的版本(6.0.11)。 希望这篇评论对你有帮助。
看来答案是等待 EF Core 7 的更新。这应该是一个错误。我的开发全部在一台带有 SQL Server Development Edition 实例的计算机上进行。我想使用 localdb 可能是一种方法。
就我而言,我正在运行 SQLExpress,但 Visual Studio 项目 (Blazor) 无法识别服务器,因为 SQL 代理被禁用并且无法从服务启动。 在默认注册用户(身份应用程序上下文)中,它可以运行迁移并创建数据库,但不能。
我已经从 MSSQL Management Studio 创建了数据库,然后更改了连接字符串:
“服务器=(localdb)\mssqllocaldb;数据库=aspnet-BlazorApp1-872e6bbf-3922-4184-85b9-a08dacc49ca9;Trusted_Connection=True;MultipleActiveResultSets=true”
至: “服务器=计算机名\SQLEXPRESS;数据库=数据库名;集成安全性=true;加密= false;TrustServerCertificate=true;”
它起作用了。 我使用了 Visual Studion 2022 和 .NETcore 7
在连接字符串中添加 Encrypt=False 后,问题得到解决。
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=CommunicationDB;Trusted_Connection=True;MultipleActiveResultSets=True;Encrypt=False;"