.NET 4.7升8.0后System.Data.SqlClient正常但Microsoft.Data.SqlClient连接失败
问题1:为何System.Data.SqlClient可成功连接,而Microsoft.Data.SqlClient不行?
两者的核心差异在于默认的SSL证书验证行为不同:
System.Data.SqlClient(.NET Framework版本)出于兼容性考量,默认不会强制验证SQL Server的SSL证书链。即使服务器使用自签名证书或未受信任CA颁发的证书,客户端也会跳过验证,正常建立连接。Microsoft.Data.SqlClient作为官方主推的现代化SQL客户端库,为提升安全性,在配合.NET 8等新版本时默认启用了严格的SSL证书链验证。当服务器证书未被客户端信任时,就会触发登录阶段的SSL错误。
问题2:如何修改连接字符串解决问题?
只需在连接字符串中添加TrustServerCertificate=True参数,修改后的连接字符串示例如下:
Data Source=MyDbServer;Initial Catalog=MyDatabase;Application Name=MyApplication;Pooling='true';Connection Lifetime=500;Integrated Security=SSPI;Persist Security Info=True;TrustServerCertificate=True;
该参数会让客户端信任服务器返回的证书,跳过证书链的有效性验证,从而绕过当前的SSL信任问题,且无需修改数据库服务器或数据库本身。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

