我有一个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,我可以连接,但这不是一个可行的解决方案。
再次,这在几周前我测试它的最后一次工作得很好。任何关于可能发生的事情的见解都将不胜感激。
答案 0 :(得分:4)
我设法找到了这个post的解决方案。
基本上,我在我的连接文本中添加了TrustServerCertificate=True
,一切都开始了。我不知道为什么它首先停止工作,如果有人知道这是不是永久解决方案,我很想知道发生了什么。
感谢Carson63000和Jacco的建议。