我最近在开发中升级到了Entity Framework Core 7,但是出现了一个异常:“已经成功地与服务器建立了连接,但在登录过程中发生了错误。(提供程序:SSL提供程序,错误:0-证书链由不受信任的机构颁发。)” 我正在使用Microsoft SQL Server Developer(64位)。我尝试在VS2022 Server Explorer中进行更改以禁用加密并信任服务器证书,但我没有安装服务器证书,异常仍然存在。如何在开发中解决这个问题?
我最近在开发中升级到了Entity Framework Core 7,但是出现了一个异常:“已经成功地与服务器建立了连接,但在登录过程中发生了错误。(提供程序:SSL提供程序,错误:0-证书链由不受信任的机构颁发。)” 我正在使用Microsoft SQL Server Developer(64位)。我尝试在VS2022 Server Explorer中进行更改以禁用加密并信任服务器证书,但我没有安装服务器证书,异常仍然存在。如何在开发中解决这个问题?
EF Core 7.0中不存在错误,而是增强了安全性。Microsoft建议采用以下3个解决方案之一:
旧行为:默认情况下,SqlClient连接字符串使用Encrypt=False。这样可以在本地服务器没有有效证书的开发机器上进行连接。
新行为:SqlClient连接字符串默认使用Encrypt=True。这意味着:
服务器必须配置有效证书。
客户端必须信任此证书。
如果不满足这些条件,则会引发SqlException异常。例如:
已成功与服务器建立连接,但在登录过程中发生错误。(provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)
https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-7.0/breaking-changes
升级了 Microsoft.EntityFrameworkCore.SqlServer
至 7.0.0
后,我也遇到了同样的问题。
通过将 TrustServerCertificate=Yes
添加到 SQL Server 连接字符串中,我解决了这个问题。
> "ConnectionStrings": {
> "SqlServer": "Data Source=DESKTOP-*****;Initial Catalog=Test;Integrated Security=True;TrustServerCertificate=Yes",
> "LocalSqlProviderEnable": true }
我认为它失败是因为最近更新了。 我遇到过同样的问题,通过重新安装之前的版本(6.0.11)来解决。 希望这个评论可以帮助到你。
看起来答案是等待 EF Core 7 的更新。这应该是一个错误。我的开发都在一台机器上,使用 SQL Server Development 版本实例。我想使用 localdb 或许可以是一种方法。
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=CommunicationDB;Trusted_Connection=True;MultipleActiveResultSets=True;Encrypt=False;"