最近、アプリケーションを .net 3.5 から 4.0 にアップグレードしました。すべての例外で中断するデバッグ設定を有効にしてそれを行って以来、EF を使用してデータベースに接続するアプリケーションのセクションを開始するたびに、これらの例外のいくつかを取得しています。正確な数は可変です。1 つだけ取得することもあれば、立て続けに複数取得することもあります。
ReleaseHandleFailed が検出されました メッセージ: タイプ 'Microsoft.Win32.SafeHandles.SafeCapiHashHandle' の SafeHandle または CriticalHandle は、値 0x06AD3D08 のハンドルを適切に解放できませんでした。これは通常、ハンドルが別の手段 (DangerousGetHandle を使用してハンドルを抽出し、直接閉じるか、その周りに別の SafeHandle を構築するなど) によって誤って解放されたことを示します。
3.5 を対象とする場合、このような例外は発生しませんでした。これらの例外には意味のあるコール スタックが添付[External Code]
されていません。EntityFramework が何らかの形で関与していると思われる理由は、アプリの 1 つのセクションが代わりに nHiberate を使用しており、これらのメッセージがまったく生成されないためです。
関連する可能性のある他の依存関係を突き止めるには: すべての場合において、ORM は Sql Compact データベースと通信します。MS Sync Framework 2.1 を使用して、SqlServer からローカル DB を更新します。4.0 フレームワークで Entity フレームワーク モデルが再生成され、キャッシュ DB も v4.0 にアップグレードされました。
コール スタックがないため、これらのメッセージがフレームワーク内部で自動的にクリーンアップされる「無害な」エラーのカテゴリに分類されるかどうかはわかりません。または、アプリケーションの他の場所でそれらをキャッチする例外イーターがある場合。