64ビットのWindows上で32ビットOracleクライアントを使用するようにWebサイトをコンパイルする方法
-
19-09-2019 - |
質問
私はWindows 7の64ビット版に更新して、既存の.NET Webサイトを実行した後にこのエラーを受け取っています。
[例外InvalidOperationException:Oracleクライアントライブラリをロードしようとは、BadImageFormatExceptionを投げました。 Oracleクライアントコンポーネントがインストールされて32ビットと64ビットモードで実行している場合、この問題が発生します。
私は唯一の32ビットOracleクライアントがインストールされインストールされていると私は明示的に述べられない限り、私の64ビットの開発マシン上でアプリケーションが64ビットライブラリを期待していることを理解しています。これは私がこれまで行ってきた検索からです。
私は、私はそれが見つけたものだ場合、アプリケーションは32ビットを使用するように指示しますのx86にソリューションプラットフォームを変更することができることを読みました。私はこれをやりたいが、Visual Studioのソリューションでのウェブサイトにはx86のオプションがありません。
私は、テストアプリケーションを作成し、私は選択肢を持って、私はテストのウェブサイトを作成し、それはしませんでした。それは、32ビットのOracle Clientを使用するように、どのように私は、x86のウェブサイトをコンパイルすることができます。
乾杯
解決
IISマネージャで、アプリケーションプールを作成し、アプリケーションプールが32ビットモードで実行することを設定します。そして、その32ビットアプリケーションプールで実行するように32ビットのOracleクライアントを使用してウェブサイトを割り当てます。
これは32ビットモードであなたのアセンブリをロードしますので、それが32ビットのCLRをロードするCLRをロードしようとするとき、IISワーカープロセスは、32ビットプロセスはそのアプリケーションプールのために開始しますので。これは、あなたのアセンブリは、64ビットおよび32ビットモード用にコンパイルされた場合も同様です。 32ビットモードで実行しているアセンブリは、その後、32ビットモードで実行されているOracleクライアントを呼び出すことができます。