C#でASP.NETアプリケーションを構築していて、Oracleデータベースに接続したいと考えています。
64ビットのMicrosoft Window Server 2008マシン上のアプリケーションにOracle.DataAccess
への参照を追加しました。私のマシンにもODAC(Oracle Data Access Component)をインストールしました。Oracle.DataAccess.dll
もこのパスに存在します
C:\ Windows\Microsoft.NET\Assembly\GAC_64\Oracle.DataAccess
しかし、接続しようとすると、次のエラーが発生します:
ファイルまたはアセンブリ 'Oracle.DataAccess、Version = 4.112.3.0、Culture = neutral、PublicKeyToken = 89b483f429c47342'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
私の知る限り、Oracle.DataAccess
アセンブリは32ビットでのみ機能しますが、64ビットではこの種の問題があり、実際には機能しません。私の解決策は、GACから64ビットを削除し、32ビットをGACにインストールすることでした。また、アプリケーションのbinフォルダーにある.dllファイルを削除して、GAC上のアセンブリを見つけます。
マシンと運用システムが64ビットの場合、問題はありません。32ビットバージョンは問題なく動作します。
[〜#〜]更新[〜#〜]
Official Oracle ODP.NET, Managed Driver
をご覧になることをお勧めします。これはOracle.DataAccess
よりも優れたバージョンです。このManaged Driver
は、マシンでOracle Client
を必要としません。connection string
のDataSourceフィールドにTNSを提供するだけで、32
および64
ビットで正常に機能します。
デバッグ時にx86バージョンを使用するもの(Visual Studioだったと思います)のため、Oracleのx64バージョンとx86バージョンの両方をインストールする必要があります。
VS2010では、プラットフォームターゲットをx64に変更したため、このエラーメッセージは表示されなくなりました。
Visual Studioの開発サーバーは32ビットモードでのみ実行されるため、Webサイトを実行するにはIISを使用する必要があります。
IISアプリケーションプールで、アプリケーションを64ビットで実行するように設定します(設定は詳細設定にあります)。
本質的に同じエラー
私と他の回答者からの最後の投稿に従って、ODP.NETインストールコンポーネントがありません。
まだGACをチェックしていますか?
Oracle.xxxフォルダーが表示されない場合は、
あなたはどんな前進もしていません。
oracle.DataAccess.dllの正しいバージョンとビットをアプリケーションの/ BINフォルダーに入れ、ローカル参照を作成します。それは多くの問題を解決します。
このエラーを解決するには、IISで32ビットアプリケーションを許可するようにアプリプールを設定します。IISマネージャーを開き、アプリプールを右クリックして、[詳細設定]を選択します[設定]-> [32ビットアプリケーションを有効にする]をTrueに設定します。
C#コンソールアプリでも同じ例外が発生しました。私にとってそれを解決したのは、プラットフォームターゲットをx86に変更することです。 (プロジェクトプロパティ=>ビルド)