2013-03-24 25 views
14

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

15

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.

+1

Il link che hai postato ha risolto il mio problema. Grazie. – Gunnar

5

È 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

+2

Vorrei segnare la tua risposta come utile, ma non ho abbastanza rep. Grazie lo stesso. –

+0

benvenuto ................. nessun modo contrassegnare quando si dispone di crediti sufficienti –

4

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

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

+0

H Ho ricevuto lo stesso errore. Ho provato tutto ciò che ho detto qui. Ancora nessun successo. Qualche suggerimento che puoi dare? – shanmugharaj

+0

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! –