8

.net から Oracle データベースに接続しようとすると、次の例外が発生します。

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.

多くのリンクをたどった後、プラットフォームターゲットを任意のCPUに変更してこの例外を克服しようとしました.wpfアプリケーションであるため、プラットフォームターゲットを変更すると、次の例外がスローされます:

'The invocation of the constructor on type 'SSC_GIP_UI.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.

ただし、上記の例外をスローせずにプラットフォーム ターゲット x86 で正常に動作しますが、スローしBadImageFormatExceptionます。

私が取り組んでいる環境は次のとおりです: Windows Server 2008、
.net Framework 4.0、Oracle 11g (64 ビット)

誰でも教えてもらえますか?

4

3 に答える 3

6

このエラーは、アプリケーションで 32 ビット コンポーネントと 64 ビット コンポーネントが一致していないことを示しています。

64 ビット Windows でアプリケーションを実行すると、64 ビットまたは 32 ビットのいずれかで実行されます。プラットフォーム ターゲットを x86 として設定した場合、32 ビットとして実行されます。プラットフォーム ターゲットを x64 または AnyCpu として設定した場合、64 ビットとして実行されます。

Oracle にはさまざまなバージョンのクライアントがあり、1 つは 32 ビットで、もう 1 つは 64 ビットです。したがって、アプリケーションが 32 ビット モードで実行されている場合は、32 ビットの Oracle クライアントがインストールされていることを確認する必要があります。

于 2013-03-19T14:43:42.540 に答える
5

IIS を開き、このアプリケーションが使用するアプリケーション プールを見つけます そのアプリケーション プールに移動し、[32 ビット アプリケーションを有効にする] にマークを設定します

于 2013-03-22T22:22:56.993 に答える
1

まったく別の解決策は、Oracle Data Provider for .NETを使用することです。これにより、32 ビットか 64 ビットかに関係なく動作する Oracle.ManagedDataAccess dll にアクセスできます。穏やかな導入については、Oracle Magazine のこの記事をお読みください。

System.Data.OracleClient とほとんど同じように使用できますが、2 つの間に機能の同等性があるかどうかはわかりません。そのため、マイレージは異なる場合があります。

于 2016-01-06T13:44:59.707 に答える