.NET 8 API连接本地SQL Server遇Microsoft.Data.SqlClient证书异常求助
本地调试.NET 8 API时,使用Microsoft.Data.SqlClient 5.2.0连接本地SQL Server(版本16.0.1000.6),因证书问题抛出异常,具体场景如下:
Visual Studio HTTP/HTTPS调试异常
Microsoft.Data.SqlClient.SqlException (0x80131904): 已成功与服务器建立连接,但登录过程中发生错误。(provider: SSL Provider, error: 0 - 证书链由不受信任的机构颁发。)
---> System.ComponentModel.Win32Exception (0x80090325): 证书链由不受信任的机构颁发。
Docker调试异常
已成功与服务器建立连接,但预登录握手过程中发生错误。(provider: TCP Provider, error: 35 - 捕获到内部异常)
---> System.Security.Authentication.AuthenticationException: 证书链验证失败。错误:'自签名证书,[状态: UntrustedRoot]'。证书名称不匹配。提供的'DataSource'或'HostNameInCertificate'与证书中的名称不匹配。
已知Microsoft.Data.SqlClient默认将Encrypt设为true,尝试在连接字符串中添加Encrypt=false或TrustServerCertificate=True(暂未尝试安装有效证书方案),修改后的连接字符串如下:
"Server=host.docker.internal, 1433;Database=***;User ID=***;Password=***;TrustServerCertificate=True"
或
"Server=host.docker.internal, 1433;Database=RaceEnduranceHub;User ID=***;Password=***;Encrypt=false"
连接字符串通过以下代码配置使用:
services.AddDbContextFactory<EnduranceHubContext>(options => options.UseSqlServer(configuration.GetConnectionString("default")).EnableSensitiveDataLogging());
但上述两种方案均未解决问题,异常仍持续出现。
内容的提问来源于stack exchange,提问作者Diceble

