このWebアプリケーションを実行しようとしています。 「ファイルまたはアセンブリ「Oracle.DataAccess」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。」というエラーが引き続き表示されます。例外の詳細:System.BadImageFormatException。 「ファイルまたはアセンブリ「Oracle.DataAccess」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。」以下は、私がすでに試したことです。
1)すべてのOracle dllを32ビットOracle dll、つまり2.112.3.0に置き換えました
64ビットマシンに32ビットクライアントをインストールしています。オペレーティングシステムはWindows 7です。
2)個々のプロジェクトを個別にコンパイルします。すべてのOracle依存ファイルdllを削除してから、2.112.3.0のdllを個別に追加してから、各プロジェクトをコンパイルしました
3)このステートメントgacutil/i%ORA_HOME4%\ odp.net\bin\4\Oracle.DataAccess.dllを使用して、GACに32ビットdllを登録します
gacutil/i%ORA_HOME4%\ asp.net\bin\4\Oracle.web.dll
上記の2つのステートメントでは、gacutil.exeをc:\ Program Files(x86)\ Microsoft sdk\windows\v7.0A\Bin\NETFX4.0 Tools\X64からC:\ドライブにコピーしてから、
上記の2つのステートメントを実行しました。
gacutil/i%ORA_HOME4%\ odp.net\bin\4\Oracle.DataAccess.dll gacutil/i%ORA_HOME4%\ asp.net\bin\4\Oracle.web.dll上記の2つのステートメントを実行したとき、メッセージを取得しないで、管理者権限でDosウィンドウで実行しました。
4)また、この場所からすべての一時ASP.netファイルを削除しました
c:\ windows\Microsoft.Net\V4.0.30319\temporary ASP.netファイルまた、WebアプリケーションビルドプラットフォームターゲットをX86に変更しました。元々は「ANy CPU」でした。欲求不満から、プラットフォームのターゲットをX64に変更しようとしても、エラーメッセージが表示されました
「ファイルをロードまたはコールドしない。webapp」またはその依存関係の1つ。不正な形式のプログラムをロードしようとしました。
IISがコンピューターにインストールされていないため、このアプリケーションをVisual Studio 2010で実行しているため、組み込みのIISビジュアルスタジオで。
私はこの問題を解決するのに多くの時間を費やしていますが、それでも同じエラーを何度も繰り返します。
ヘルプやヒントは高く評価されます。
あるマシンから別のマシンに移動し、すべてを再インストールしたときに再び問題が発生しました。私の場合、32ビットと64ビットの両方のOracle ODP.NETインストールを使用しています。
新しいマシンでアセンブリをリストすると、次のリストになりました
C:\Oracle\product\11.2.0\X64\odp.net\bin\4>gacutil /l|findstr Oracle.DataAccess
Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.2.102.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.2.111.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.2.112.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.4.112.Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
ここに表示されるのは64ビットDLLのみです。
Web.configからは表示されませんでしたが、使用していたのは32ビットバージョンでした。
古いマシンをGACutilでチェックすると、X86のDLLも多く見られました。
登録プロセスを再適用することで修正されました(x32/x64の両方のバージョンはここで参照されます)
OraProvCfg.exe /action:gac /providerpath:C:\Oracle\product\11.2.0\x32\ODP.NET\bin\4\Oracle.DataAccess.dll
OraProvCfg.exe /action:gac /providerpath:C:\Oracle\product\11.2.0\x64\ODP.NET\bin\4\Oracle.DataAccess.dll
その後、Visual Studioは幸せなバニーになり、すべてを再びコンパイルしてくれました。
これを試してください:Open IIS Manager、アプリケーションプールの詳細設定を変更し、[32ビットアプリケーションを有効にする]をfalseに変更します。
私は次の手順で解決策を見つけました:
Oracle.DataAcces.dll
参照を削除し、C:\windows\Assembly\GAC\Oracle.DataAccess\X.XXX.X.XX__89b483f429c47342/Oracle.dataaccess.dll
それが役に立てば幸い
AppPoolで32ビットアプリケーションを有効にする必要がある場合があります。 IIS=>アプリプールを右クリック=>事前設定=> '32ビットアプリケーションを有効にする 'をtrueに移動します。
アプリプールと、そのアプリプールを指す対応するアプリケーションを再起動することを忘れないでください。
私の場合、次のことで問題が解決しました。
Oracle.dataaccess.dll
]タブの参照リストから参照.NET
をbin
ファイルに追加します。IIS ExpressおよびVS 2017:を使用している場合
[Webアプリケーションのプロパティ]> [Web]タブ> [サーバー]セクションに移動し、ビット数をx64に変更します。
私にとっては他のすべてはほとんど問題ありませんでしたが、どういうわけかプロジェクトの設定が変更され、IISLocalの代わりにiisExpressが使用されるようになりました。 (IISLocalで)仮想ディレクトリを変更してポイントすると、再び完全に機能し始めました。
私の場合、VS 2010、Oracle v11 64ビットを使用しています。 64ビットモード(Webプロジェクト構成で「任意のCPU」モードに設定)で公開し、プロダクションサーバーでIISを32ビット互換にfalseに設定する場合があります(サーバーが64ビットと私はそれを活用したいです)。
次に、「ファイルまたはアセンブリ 'Oracle.DataAccess'をロードできませんでした」という問題を解決します。
また、「ODAC112030Xcopy.Zip」のinstall.batファイルを 64ビットOracle Data Access Components(ODAC)ダウンロード からダウンロードして実行できます。これで問題が解決しました。
Oracle.dataaccess.dllの64ビットバージョンが必要でしたが、使用している他のライブラリで問題が発生しました。
[BadImageFormatException:ファイルまたはアセンブリ「Oracle.DataAccess」またはその依存関係の1つをロードできませんでした。不正な形式のプログラムをロードしようとしました。]
上記のいくつかの手順を実行しました。プロジェクトプールの設定を進めて32ビットが有効になるように切り替えますが、そのように残しておくことに満足しなかったので、再び有効にしました。
私のプロジェクトには、Elmahおよびlog4netの参照に依存する参照もありました。これらの最新バージョンをダウンロードしたので、私のプロジェクトは、プールの32ビット許可設定を変更することなく、正常にビルドおよび実行できました。