web-dev-qa-db-ja.com

ファイルまたはアセンブリ 'Oracle.DataAccessエラーをロードできませんでした

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つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

11
RAKESH HOLKAR

私の知る限り、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ビットで正常に機能します。

7
Felipe Oriani

デバッグ時にx86バージョンを使用するもの(Visual Studioだったと思います)のため、Oracleのx64バージョンとx86バージョンの両方をインストールする必要があります。

3
nvoigt

VS2010では、プラットフォームターゲットをx64に変更したため、このエラーメッセージは表示されなくなりました。

2
Vu Doan

Visual Studioの開発サーバーは32ビットモードでのみ実行されるため、Webサイトを実行するにはIISを使用する必要があります。
IISアプリケーションプールで、アプリケーションを64ビットで実行するように設定します(設定は詳細設定にあります)。

1

本質的に同じエラー

私と他の回答者からの最後の投稿に従って、ODP.NETインストールコンポーネントがありません。

まだGACをチェックしていますか?

Oracle.xxxフォルダーが表示されない場合は、

あなたはどんな前進もしていません。

oracle.DataAccess.dllの正しいバージョンとビットをアプリケーションの/ BINフォルダーに入れ、ローカル参照を作成します。それは多くの問題を解決します。

1
user1193035

このエラーを解決するには、IISで32ビットアプリケーションを許可するようにアプリプールを設定します。IISマネージャーを開き、アプリプールを右クリックして、[詳細設定]を選択します[設定]-> [32ビットアプリケーションを有効にする]をTrueに設定します。

0
Venkat

C#コンソールアプリでも同じ例外が発生しました。私にとってそれを解決したのは、プラットフォームターゲットをx86に変更することです。 (プロジェクトプロパティ=>ビルド)

0
nir weiner