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」と同じエラーが発生します
IIS Managerでサーバーを選択し、「Application Pools」を選択します。 Webアプリで使用されるアプリケーションプールを選択し、右側のメニューから「Advanced Settings」をクリックします。
詳細設定の「General Section」で、「32ビットアプリケーションを有効にする "に設定し、True 。
この修正は、32ビットバージョンのOracle Dllを実行しようとする64ビットサーバーにのみ適用されます。
よろしくジョージ
ジョージ・ロウト:
IIS Managerでサーバーを選択し、[アプリケーションプール]を選択します。Webアプリで使用するアプリケーションプールを選択し、右側のメニューから[詳細設定]をクリックします。
詳細設定の「一般セクション」で「32ビットアプリケーションを有効にする」をクリックし、Trueに設定します。
この修正は、32ビットバージョンのOracle Dllを実行しようとする64ビットサーバーにのみ適用されます。
逆もまた真です。 64ビットバージョンを使用 Oracle Dllの場合、 "2ビットアプリケーションの有効化"をfalseに設定する必要があります。
-ヤコブ
不正な形式は、ビット数の問題を示しています。サーバーを実行するには、プログラムが実行されているアプリケーションプールを変更して、32ビットサポートを有効にするか、64ビットOracleクライアントをインストールします。
binおよびobjフォルダーを削除すると、問題が解決しました。
アプリケーションプールを64ビットから32ビットに変更することがソリューションです。