0

ストーリー: 私の Web サイトは System.Data.OraceClient で実行されます (さまざまな技術的な理由により、dll を変更できません)。現在、32 ビットのサードパーティ DLL が Web サイトに統合されています。Visual Studio から実行すると、すべてが完全に実行されますが、IIS に公開すると、上記のエラーがスローされます。

現在のソリューション: IIS アプリケーション プールで 32 ビットを有効にする

32 ビットが有効になると、サード パーティの DLL が動作し始め、System.Data.Oracle client fails with BadImageFormat exception

IIS アプリケーション プールで 32 ビットを無効にします。

32 ビットが無効になっている場合System.Data.OracleClientは動作を開始し、サード パーティの DLL は次のエラーで失敗します。

次のエラーのため、CLSID {xxxxx} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: xxxxxx クラスが登録されていません

-- このクラスは登録されています。そのため、32 ビットが有効になっている場合に機能します。

今、私は一度に 1 つの dll しか動作しない状況にあります。アプリケーション プールで 32 ビットが有効になっているときに、アプリケーション全体を Oracle Data Access に移行せずに System.Data.OracleClient を実行する回避策はありますか?

4

2 に答える 2

0

System.Data.OracleClient古くから廃止されており、今後は使用しないでください。Microsoft がSystem.Data.OracleClient64 ビット Windows の開発を中止したとき、x86 (32 ビット) でのみ使用できます。

Oracle の ODP.NET プロバイダーを使用することをお勧めします。x86 および x64 で使用できます。

この命令も確認してください: BadImageFormatException. これは、32 ビットの Oracle クライアント コンポーネントがインストールされている状態で 64 ビット モードで実行している場合に発生します。

于 2017-05-19T09:34:26.123 に答える