2013-05-14 17 views
9

Mi sono appena trasferito da un desktop Windows 7 a 32 bit a un computer portatile Windows 7 a 64 bit. Abbiamo un programma C# che stiamo sviluppando che contiene circa 60 progetti all'interno della soluzione. Continuo a ricevere il seguente errore mentre si cerca di costruire:Eseguire client Oracle in modalità a 32 bit su un computer a 64 bit

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 

Ovviamente l'errore è piuttosto auto esplicativo e sto cercando di ottenere tutta la mia soluzione per caricare in modalità a 32 bit. Ho esaminato ogni singolo progetto e impostato la piattaforma di destinazione su x86, ma sto ancora ricevendo questo errore. Ho cercato su Google e ho visto innumerevoli approcci diversi, ma non riesco a risolvere questo problema. Qual è il modo migliore per garantire che il mio progetto sia in esecuzione in modalità a 32 bit su un computer a 64 bit?

Sto utilizzando Visual Studio 2008. Attualmente sto considerando di eseguire il downgrade a 32 bit, ma in realtà voglio evitare di doverlo fare.

+0

Non è chiaro: si verifica questo errore durante il processo di creazione o quando si esegue l'applicazione? –

+0

La compilazione ha esito positivo, ma durante il caricamento della prima pagina (è un'app basata sul Web) genera questo errore quando si tenta di connettersi al DB Oracle. – Joseph

+0

Quale client Oracle stai usando (32-bit o 64-bit)? – Belogix

risposta

9

Ho trovato che è necessario installare il client Oracle a 32 bit (è possibile download the installer dal proprio sito Web) anche se si esegue su un computer a 64 bit.

Inoltre, durante le discussioni le persone stavano parlando della modalità a 32 bit, ecc. In questo modo è possibile verificare/impostare quello per un'applicazione ospitata su IIS 7. Non dovresti aver bisogno di cambiare questo, ma ho aggiunto qui per completezza/riferimento futuro.

  • Avviare IIS 7 ed espandere il nodo del nome del server.
  • Fare clic sul nodo Pool di applicazioni e trovare il pool di applicazioni che si sta utilizzando.
  • Sul pannello di destra clic Impostazioni avanzate ...
  • Nella finestra di pop-up che compare verificare abilitati applicazioni a 32 bit impostazione che è terza opzione dall'alto.
5

È necessario modificare il file .exe principale per eseguire solo come 32 bit. È possibile farlo in Visual Studio: è sufficiente modificare il target della piattaforma da "Any CPU" a "x86".

Se ciò non è possibile, utilizzare corflags.exe che forza un exe esistente a essere un'applicazione a 32 bit.

+0

Non ho x86 nel menu a discesa nella barra degli strumenti, quindi suppongo che dovrò usare corflags.exe. Dalla pagina a cui mi hai gentilmente collegato, presumo di dover eseguire "CorFlags.exe assembly/32BIT +" Qual è esattamente il valore dell'assembly? Grazie. Assemblaggio – Joseph

+0

- il tuo file exe. In Visual Studio fai clic sul tuo progetto, scegli Proprietà. selezionare la scheda Build e su di essa si trova Platform target. In questa combinazione hai Any CPU, x86, x64 –

+0

Ho appena letto nei commenti che stai usando l'applicazione web. È possibile impostare questo in IIS: https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx –

2

Sono stato alle prese con questo problema per mesi e finalmente risolto. Penso che tutti i post siano utili, ma ho avuto un pezzo mancante. Non avevo un ODBC Microsoft per l'installazione di istanze Oracle per DSN utente o DSN di sistema. Sto lavorando su una macchina Windows 8. Quindi per me sono dovuto andare alla ricerca generale di Windows e digitare ODBC e aprire l'Amministratore di origine dati ODBC (32 bit). Verificare se si dispone di una configurazione Microsoft ODBC per Oracle nella scheda DSN utente o nella scheda DSN di sistema. In caso contrario, fare clic su Aggiungi e selezionare Microsoft ODBC per Oracle. Compila le informazioni per l'origine dati che stai cercando di colpire e fai clic su OK. Assicurati di riavviare il computer e questo è quello che ha funzionato per me. Spero che questo aiuti alcuni di voi.

0

Nel mio caso, il client Oracle 64 bit è stato installato sulla mia macchina ma continua a dare lo stesso errore. Quindi, ho analizzato che nella mia applicazione vai a Applicazione clic destro vai a -> Proprietà-> scheda Web e deseleziona l'opzione "Usa IIS Express" se si utilizza il server Web IIS locale. Il problema è stato risolto.

Problemi correlati