web-dev-qa-db-ja.com

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

Asp.net mvc(EF)プロジェクトがあり、プロジェクトをWindows Server 2008に移動するときに、PCにバージョン4.112.2.50 -32bitのOracleデータプロバイダーをダウンロードしました(同じバージョンのodp-64bitがあります)問題:

ファイルまたはアセンブリ「Oracle.DataAccess」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。

サーバーからOracleに「Oracle.DataAccess.dll」を取得し、プロジェクト参照で作成すると、ファイル「Oracle.Web」に上記のような別のエラーメッセージが表示されます。

ファイルまたはアセンブリ「Oracle.Web」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。

また、サーバーからプロジェクト参照にファイル「Oracle.Web.dll」を取得すると、「Oracle.Web」と同じエラーが発生します

31
user975260

IIS Managerでサーバーを選択し、「Application Pools」を選択します。 Webアプリで使用されるアプリケーションプールを選択し、右側のメニューから「Advanced Settings」をクリックします。

詳細設定の「General Section」で、「32ビットアプリケーションを有効にする "に設定し、True

この修正は、32ビットバージョンのOracle Dllを実行しようとする64ビットサーバーにのみ適用されます。

よろしくジョージ

59
McHaroni

ジョージ・ロウト:

IIS Managerでサーバーを選択し、[アプリケーションプール]を選択します。Webアプリで使用するアプリケーションプールを選択し、右側のメニューから[詳細設定]をクリックします。

詳細設定の「一般セクション」で「32ビットアプリケーションを有効にする」をクリックし、Trueに設定します。

この修正は、32ビットバージョンのOracle Dllを実行しようとする64ビットサーバーにのみ適用されます。

逆もまた真です。 64ビットバージョンを使用 Oracle Dllの場合、 "2ビットアプリケーションの有効化"をfalseに設定する必要があります。

-ヤコブ

6
Jacob
  1. Oracle.DataAccess.dllは、参照だけでなくインストールする必要があります。
  2. 参照のローカルプロパティのコピーをtrueに変更します。
3
gdoron

不正な形式は、ビット数の問題を示しています。サーバーを実行するには、プログラムが実行されているアプリケーションプールを変更して、32ビットサポートを有効にするか、64ビットOracleクライアントをインストールします。

1
tsells

binおよびobjフォルダーを削除すると、問題が解決しました。

0
Elvin Mammadov

アプリケーションプールを64ビットから32ビットに変更することがソリューションです。

0
ward coysman