Ho installato un'app Web su IIS 7.0 Windows Server 2008 R2 64 bit. Mi riferisco a oracle.DataAccess.dll; Quando provo ad accedere all'applicazione, viene visualizzato il seguente messaggio: "Impossibile caricare il file o l'assembly 'Oracle.DataAccess' o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato." Qualcuno può aiutarmi, per favore?Impossibile caricare il file o l'assembly 'Oracle.DataAccess' o una delle sue dipendenze. Si è tentato di caricare un programma con un formato errato
risposta
Sembra che il processo di installazione del componente Oracle Data Access utilizzi la versione "11.2 Release 3 (11.2.0.2.1) con Xcopy Deployment" non funzionante. Per risolvere questo problema è necessario registrare gli assembly mancanti nel GAC. Per fare questo per questa versione specifica eseguire questi comandi all'interno di una console di amministrazione:
md C:\Windows\assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\
copy %ORACLE_HOME%\odp.net\bin\4\Oracle.DataAccess.dll C:\Windows\assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\
md C:\Windows\assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\
copy %ORACLE_HOME%\asp.net\bin\4\oracle.web.dll C:\Windows\assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\
Si noti che questo registra solo la DLL, ma non altre lingue risorse. Quindi, se stai utilizzando una lingua diversa dall'inglese (de, es, fr, it, ko, pt-BR, zh-CHS e zh-CHT), allora devi registrarli anche usando la risorsa corrispondente file.
Se si dispone di Visual Studio installato sulla macchina, è possibile eseguire i seguenti comandi invece:
gacutil /i %ORACLE_HOME%\odp.net\bin\4\Oracle.DataAccess.dll
gacutil /i %ORACLE_HOME%\asp.net\bin\4\oracle.web.dll
Nota: cerca gacutil.exe nella cartella di installazione di Visual Studio per esso.
Spero che questo aiuti.
P.S. Oppure puoi provare this.
È necessario registrare tale dll sul server live utilizzando GAC util. Controlla anche se è presente nella cartella bin o no. Alcune volte la mancanza di dll nella directory bin risulta nello stesso errore
Vorrei segnare la tua risposta come utile, ma non ho abbastanza rep. Grazie lo stesso. –
benvenuto ................. nessun modo contrassegnare quando si dispone di crediti sufficienti –
Ho evitato di registrare gli assembly 11.2 Release 5 nella GAC per setting "Enable 32-bit Applications" for the application pool to true.
Potrebbe essere necessario abilitare le applicazioni a 32 bit in AppPool.
Funziona perfettamente per me farlo. –
installazione a 64 bit ODAC 11.2 Release 3 (11.2.0.2.1) Xcopy per Windows x64 da:
http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
fisso per me. Assicurati di aggiornare il tuo percorso di sistema come indicato nel passaggio 4 nel file readme.
Nel mio caso, utilizzo VS 2010, Oracle v11 64 bit. Potrei pubblicare in modalità 64 bit (impostazione su "Any Cpu" in modalità di configurazione Web Project) e potrei impostare IIS su Production Server su 32 bit come compability su false (perché il server è a 64 bit e mi piace approfittarne).
Quindi per risolvere il problema "Impossibile caricare il file o l'assembly 'Oracle.DataAccess'" (appare a volte il "messaggio di errore del compilatore: CS1705: Assembly" errore):
- Nel PC locale e Server è installato Oracle v11, 64 bit.
- In tutti i PC Dev Dev locale faccio riferimento a Oracle.DataAccess.dll (C: \ app \ utente \ prodotto \ 11.2.0 \ client_1 \ odp.net \ bin \ 4) che è a 64 bit.
- In IIS Production Server, ho impostato la compatibilità a 32 bit su False.
- Il riferimento nel progetto Web in System.Web.Mvc.dll era la versione v3.0.0.1 nel PC locale, tuttavia in Production è solo versione MVC installata 3.0.0.0. Quindi, la soluzione era locallly funzionare con MVC 3.0.0.0 e non 3.0.0.1 e pubblicare di nuovo sul server, e funziona.
La risposta accettata, pubblicato da George Netu aiutato a risolvere il mio problema, ma ho dovuto armeggiare con alcune inezie aggiuntive:
Descrizione del problema:
Under C: \ Windows \ assemblaggio, ho trovato due articoli Oracle.DataAccess (cartelle GAC?). Relitto, causato da diverse installazioni client Oracle. Un articolo ha mostrato la versione 2.112.1.0 ma era in realtà versione 2.121.2.0 (visibile tramite Proprietà-> Versione). Quella incoerenza era il bug.
I primi tentativi inutili:
- provato a disinstallare e reinstallare il client completo Oracle, sia nelle versioni runtime/amministratore
- cercato di ridistribuire le DLL corrette
- cercato di copiare il nuovo assembly installati nei tempi server GAC, come indicato nella risposta accettata sopra tramite prompt dei comandi (ma che non ha risolto la mancata corrispondenza della versione ..)
- provato a utilizzare
gacutil /i ...
finale successo:
ho atterrato sulla Gacutil.exe msdn page ed erano in ultima analisi, in grado di eliminare gli elementi dalla C: \ Windows \ assembly cartella.
gacutil /u Oracle.DataAccess, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae32233ca
gacutil /u Oracle.DataAccess, Version=2.212.2.0, Culture="Neutral",PublicKeyToken=45e343aae3223abc
gacutil /u Oracle.Web, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae3223def
Dopo di che, ho ripetuto le due gacutil /i ...
comandi e le due DLL apparve nelle versioni coerenti.
Infine riavviato IIS e funziona ..
H Ho ricevuto lo stesso errore. Ho provato tutto ciò che ho detto qui. Ancora nessun successo. Qualche suggerimento che puoi dare? – shanmugharaj
rimuovere completamente tutti questi elementi dal GAC, ridistribuire, quindi controllare se si dispone di tutte le stesse versioni nell'applicazione, nella cartella bin e in GAC! –
Il link che hai postato ha risolto il mio problema. Grazie. – Gunnar