在登录前握手期间发生错误

本文关键字:错误 登录 | 更新日期: 2023-09-27 17:50:54

我有一个c#应用程序,它使用Linq to SQL与数据库通信,当我一个月前测试它时,它工作得很好。但是,它现在抛出了以下异常:

A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
------ Exception ------
Error:  A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 - The received certificate has expired.)

我正在用Verisign密钥对代码进行数字签名,但它尚未过期。在构建安装程序之前,我不会进行数字签名,这发生在调试中的开发系统上,因此没有对代码进行签名。

在其他已签名并安装该软件的系统上也会发生这种情况。这些系统访问与我在开发系统上使用的相同的测试数据库,并且之前正在工作。

导致错误的代码行如下:

        List<req> results = new List<req>();
        using (var db = new MyDbDataContext(connectionString))
        {
            var query =
                from item in db.reqs
                where item.senddate == null
                select item;
            results = query.ToList();
        }

当我调用results = query.ToList();时发生错误。

我使用以下连接字符串:

Data Source=<removed>;Initial Catalog=<removed>;UID=sa;PWD=<removed>;Encrypt=true;Integrated Security=false

如果我设置Encrypt=false,我可以连接,但这不是一个可行的解决方案。

再一次,这工作得很好,我最后一次测试它几个星期前。如果您对可能发生的事情有任何见解,我将不胜感激。

在登录前握手期间发生错误

我从这篇文章中找到了一个解决方案。

基本上,我添加了TrustServerCertificate=True到我的连接文本,一切又开始工作了。我不确定为什么它一开始就停止工作了,如果有人知道这是否是一个永久的解决方案,我很想知道发生了什么。

感谢Carson63000和Jacco的建议