現在、バックエンドで Oracle 10g データベースと通信する WCF サービスの実装に取り組んでいます。サービス内からデータベースに接続しようとすると、次の例外が発生します: System.TypeInitializationException
.
私はWindows 7(64ビットマシン)で実行しています。
私はVS2010を使用しています。
バックエンドで Oracle 10g を使用しています。
私は、次のインストール済みインスタンスの Oracle.DataAccess.dll (ODP.Net) です。
c:\oracle\product\10.2.0\.....\ODP.NET\bin\1.x\Oracle.DataAccess.dll
この DLL を WCF サービスのリファレンスに含めました。
このサービスを VS WPF ソリューション内のプロジェクトとして含めました。
VS 2010 で WPF アプリケーションを起動すると、サービスが自動的に起動します。
実行時に、デバッグ出力ウィンドウに次の出力が表示されます。
'WcfSvcHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\assembly\GAC\Oracle.DataAccess\1.102.2.20__89b483f429c47342\Oracle.DataAccess.dll' タイプ 'System.TypeInitializationException' の最初のチャンス例外' Oracle.DataAccess.dll で発生
案の定、デバッガーで例外の詳細を確認すると、次の情報が表示されます (これは、新しい ORACLE 接続を作成しようとしたときに発生します)。
「'Oracle.DataAccess.Client.OracleConnection' の型初期化子が例外をスローしました。」InnerException {"プロバイダは Oracle クライアントのバージョンと互換性がありません"} System.Exception {Oracle.DataAccess.Client.OracleException}
少し背景:
基本的に、データ層を WCF サービスに移行しています。同じサービス レイヤーが以前に WinForm アプリケーションに存在していました。私のWinFormアプリケーションではすべてうまくいきます。私は Oracle.DataAccess.dll への同じ参照を含め、データベースでのすべての読み取り/書き込みは正常に機能します。
WCF と WinForm のアクセス/DLL の使用に明らかに違いはありますか? 私が気付いていない制限はありますか?デバッガーで VS2010 を介してこれを実行する際に問題はありますか?
ここで何が起こっているのかまったくわかりません。ヒント/方向性は大歓迎です。