4

Linq to SQL を使用してデータベースと通信する C# アプリケーションがあり、1 か月前に最後にテストしたときは問題なく動作していました。ただし、現在、次の例外がスローされています。

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 に答える