Ho seguito le istruzioni qui: http://splinter.com.au/blog/?p=156 nel tentativo di utilizzare una versione più recente di ODP.NET senza installare il client Oracle 11g. Ho seguito tutto, finora, tranne per il riavvio di IIS.Oracle oci.dll nella directory bin ASP.NET non può essere eliminato/non funziona
Tuttavia, questo ha causato alcuni problemi e sono davvero curioso di sapere perché. Se provo a utilizzare ODP.NET, mi viene in mente un'eccezione vuota generata quando la connessione Oracle tenta di connettersi (ConnectExample.Open() per esempio).
Ma la cosa più curiosa: non riesco a cancellare oci.dll. Dice che è in uso. Cosa potrebbe usare questa dll? Cosa fa esattamente ASP.NET con una dll nativa quando si trova nella directory Bin? Ho pensato che forse questo è qualcosa che coinvolge il oci.dll, ma se uso la DLL in modo simile in un'applicazione desktop WinForm allora oci.dll non viene bloccato, e posso cancellarlo liberamente.
Inoltre, dopo aver provato a usarlo, il normale System.Data.OracleClient ha smesso di funzionare. Ora genera un'eccezione che OCIEnvCreate restituisce con un -1.
Proverò a riavviare IIS e spero che risolverà questo problema, ma mi piacerebbe sapere cosa sta succedendo qui (e se può essere risolto senza riavviare IIS). Qualcuno ha un'idea?
Edit: Ho provato a riavviare IIS e che non risolvere nulla
Edit # 2: Non credo che ho formulato questa domanda molto bene, ma che era a causa del mio assumendo riavvio di IIS avrebbe funzionato. Ora ho solo bisogno di sapere perché non funziona. In Google su problemi simili ho riscontrato solo 2 post sul forum che mi hanno riferito il mio problema esatto: Oracle ODP.NET restituisce un'eccezione vuota durante il tentativo di connessione. Ecco i link a quelle:
http://kr.forums.oracle.com/forums/thread.jspa?threadID=632296
http://forums.oracle.com/forums/thread.jspa?threadID=549864
Il legame coreano di cui sopra è il più interessante. Hanno un'installazione completa che mi fa sospettare che il mio problema non riguardi i file o i file mancanti. Mi chiedo cosa intendano per "server di produzione che generano eccezioni vuote se viene effettuata una chiamata alla DLL OCI prima di poter stabilire l'ODP"?
Modifica/Aggiornamento n. 3: abbiamo un server intranet qui per il nostro dipartimento che sono riuscito a testare oggi. Ho aggiunto la DLL richiesta alla cartella Bin e tutto ha funzionato senza la necessità di riavviare IIS. Io non chiedo. Proverò altri test su questo server per vedere se riesco a replicare il problema
Edit # 4 (l'odissea continua): Ho determinato che oraocci11.dll (l'interfaccia di chiamata C++ DLL) è necessario inizialmente da ASP. NET (o la libreria ODP.NET) per trovare anche le dll del client 11g, dopo che oraocci11.dll sembra non essere mai più usato e può essere cancellato. Non so cosa significhi per il mio problema, ma visto che aggiunge alla base di conoscenze ho pensato di menzionarlo
Modifica # 5: Ho aggiunto mfc71.dll e msvcr71.dll, 2 file di sistema Windows che si occupano di C/MFC, nella directory Bin come ho scoperto sono necessari da ODP.NET (o almeno, necessari per il client). Questo, per lo meno, ha reso le cose rimaste sul vecchio familiare errore "Cliente non compatibile". Ho rimosso quelle 2 DLL e abbastanza sicuro è tornato agli stessi errori sopra riportati. Aggiungerli non ha fatto sparire quegli errori, comunque, quindi dovrò resettare di nuovo IIS.
ASP.NET caricherà la DLL quando è PInvoked da qualche parte, la DLL rimarrà caricata finché il processo ASP.NET non verrà riciclato/riavviato. –