2013-03-19 13 views
6

Durante il tentativo di connettersi al database Oracle da .net ottenere la seguente eccezione:tentativo di caricare librerie client Oracle ha gettato BadImageFormatException

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.

Dopo aver attraversato molti collegamenti ho cercato di superare questa eccezione modificando la piattaforma target Qualsiasi CPU.Since è un'applicazione WPF, dopo aver cambiato il bersaglio piattaforma si getta la seguente eccezione:

'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'.

Ma funziona bene con piattaforma di destinazione x86 senza lanciare l'eccezione di cui sopra, ma genera BadImageFormatException.

L'enironment su cui sto lavorando è: server di Windows 2008,
.NET Framework 4.0, Oracle 11g (64-bit)

qualcuno può dire me.how per risolvere il problema?

risposta

6

Questo errore indica che si è verificato un disallineamento tra i componenti a 32 e 64 bit nell'applicazione.

Quando si esegue un'applicazione in Windows a 64 bit, può essere eseguita a 64 bit oa 32 bit. Se hai impostato il target della piattaforma come x86, verrà eseguito come 32 bit. Se hai impostato il target della tua piattaforma come x64 o AnyCpu, verrà eseguito come 64 bit.

Oracle ha diverse versioni del client, uno è a 32 bit e l'altro a 64 bit. Quindi, se l'applicazione è in esecuzione in modalità a 32 bit, è necessario assicurarsi che il client Oracle a 32 bit sia installato.

5

penso che forse si deve: Aprire IIS, trovare ciò pool di applicazioni Questa applicazione utilizza andare a quel pool di applicazioni, impostare un segno nella 'Attiva applicazioni a 32 bit'

+0

Grazie. Non c'è da stupirsi che il mio NON stia funzionando attraverso l'applicazione web, ma che funzioni normalmente attraverso le applicazioni win32. –

0

Una soluzione del tutto alternativa sarebbe per usare il Oracle Data Provider for .NET che ti darà accesso alla dll Oracle.ManagedDataAccess che funziona indipendentemente dal fatto che tu sia su 32 o 64 bit. Leggi this article from Oracle Magazine per un'introduzione gentile.

È possibile utilizzarlo praticamente allo stesso modo di System.Data.OracleClient anche se non sono sicuro che ci sia una parità di funzionalità tra i due, quindi il tuo chilometraggio può variare.

Problemi correlati