4

我有一个 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,我可以连接,但这不是一个可行的解决方案。

同样,这在几周前我最后一次测试时效果很好。任何关于可能发生的事情的见解将不胜感激。

4

1 回答 1

6

我设法从这篇文章中找到了解决方案。

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

感谢 Carson63000 和 Jacco 的建议。

于 2013-01-08T23:23:55.363 回答