2013-01-08 28 views
3

我有一個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 

我能如果我設置加密= false來連接,但是這不是一個可行的解決方案。

再一次,這工作得很好,幾個星期前我最後一次測試它。任何有關可能發生的事情的見解都將不勝感激。

+0

您試圖在不同計算機上連接到客戶端的數據庫?您是否按照「[加密連接到SQL Server](http://msdn.microsoft.com/zh-cn/library/ms189067.aspx)」中所述使用加密連接? *有*證書過期了,如果是的話? – Carson63000

+0

Db位於公司網絡內的單獨服務器上。我正在使用Windows身份驗證和加密。 Verisign證書尚未過期。 – Tim

+0

仔細檢查您是否正確點擊數據庫服務器。 –

回答

4

我設法從這個post找到解決方案。

基本上,我將TrustServerCertificate=True添加到我的連接文本中,並且所有事情都再次開始工作。我不確定它爲什麼一開始就停止了工作,如果有人知道這是否是一個永久的解決方案,我想知道更多關於發生的事情。

謝謝Carson63000和Jacco的建議。