Fehler bei der Verwendung von oracle.dataaccess.dll

8

Ich habe eine Webanwendung, die Oracle.DataAccess.dll verwendet, um mit einer Oracle-Datenbank zu kommunizieren. Die Web-Anwendung, die auf einem 32-Bit-Windows-System bereitgestellt wird, funktioniert, aber nicht auf einem 64-Bit-Windows-Server-Server. Ich installierte 10204_vista_win2k8_x64_production_db Paket, referenzierte die installierte DLL (Version 2.102.4.0) aus dem Projekt, aber ich bekomme den folgenden Fehler:

Datei oder Assembly konnte nicht geladen werden 'Oracle.DataAccess, Version = 2.102.4.0, Culture = neutral, PublicKeyToken = 89b483f429c47342' oder eine seiner Abhängigkeiten. Das System kann die angegebene Datei nicht finden.

    
Zoliqa 20.01.2010, 11:26
quelle

5 Antworten

11

Das gleiche hier. Die Oracle.DataAccess-Assembly wird nicht im 64-Bit-Modus ausgeführt.

Sie sollten den Anwendungspool für Ihre Site auf den 32-Bit-Modus setzen (gehen Sie zu Erweiterte Einstellungen des Anwendungspools und legen Sie 32-Bit-Anwendungen zulassen auf "True" fest)

Wenn das nicht funktioniert, stellen Sie sicher, dass sich Ihr Oracle-Verzeichnis (das Verzeichnis mit allen Oracle-DLLs) in Ihrem Systempfad befindet. Wenn Sie das vergessen, erhalten Sie den gleichen kryptischen Fehler, Oracle.DataAccess nicht zu finden.

BEARBEITEN :

Die Installation des Oracle-Clients kann große Probleme bereiten. Die Verwendung des Oracle Instant Clients ist etwas einfacher als die Installation des vollständigen Clients. Das ist es, was ich normalerweise tue:

  1. Laden Sie den Oracle Instant Client herunter
  2. Entpacke das Archiv in c: \ oracle (jedes andere Verzeichnis reicht)
  3. Öffnen Sie eine Eingabeaufforderung als Administrator
  4. Geben Sie cd \ oracle ein
  5. Geben Sie odp.net20 myhome konfigurieren ein
  6. Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz", "Erweiterte Systemeinstellungen", "Umgebungsvariablen" und fügen Sie dem Systempfad
  7. das Verzeichnis C: \ oracle hinzu
  8. Kopieren Sie die Datei Oracle.DataAccess.dll von c: \ oracle \ odp.net \ bin \ 2.x in den bin-Ordner Ihrer Anwendung
  9. Bearbeiten Sie (optonal) Ihre Datei c: \ oracle \ tnsnames.ora
Philippe Leybaert 20.01.2010 11:30
quelle
4

Ich werde Ihnen die Antworten geben, die ich gerade von Windows Server 2008 R2 erhalten habe, bei dem es sich um ein 64-Bit-Betriebssystem handelt. Die Anwendungssammlung von Bibliotheken, die ich erhielt, wurde unter Verwendung von .net 3.5 x86 mit den älteren DLL-Bibliotheken entwickelt, und ich steckte fest, weil ich die neueren x64-Clients von Oracle installiert hatte.

Was ich gefunden habe, war folgendes: Installieren Sie den neuesten x64-Client von Oracle für Windows Server 2008. Ich glaube, dies wäre der 2.7.0-Client. Wenn Sie die Installation auswählen, stellen Sie sicher, dass Sie benutzerdefinierte Einstellungen vornehmen, und wählen Sie die .NET-Bibliotheken aus. Konfigurieren Sie Ihre tnsnames-Dateien und testen Sie Ihr tnsping gegen Ihre Datenquelle.

Als nächstes, wenn Sie eine 32-Bit-Anwendung ausführen, installieren Sie die gleiche Version des Clients für 32-Bit. Befolgen Sie die gleiche Installationsroutine und wählen Sie dasselbe Heim.

Wenn Sie fertig sind, werden Sie feststellen, dass Sie eine einzelne App / Produkt mit zwei Client-Verzeichnissen (Client1 und Client2) haben.

Wenn Sie zum Verzeichnis windows / assemblies navigieren, finden Sie, dass Sie einen Verweis auf die Oracle.DataAccess.dll (x2) mit einem für x86 und einem für AMD64 haben.

Nun, abhängig davon, ob Sie Entwickler haben oder selbst auf dem Rechner entwickeln, können Sie hier in Ordnung sein. Wenn Sie jedoch ältere Treiber verwenden, müssen Sie einen letzten Schritt durchführen.

Navigieren Sie zum Verzeichnis app \ name \ product \ version \ client_1 \ odp.net \ publisher policy \ 2.x. Darin enthalten sind zwei Richtliniendateien. Verwenden Sie gacutil / i, um die Policy.2.111.Oracle.DataAccess.dll im GAC zu installieren. Dadurch werden ältere Oracle ODP-Aufrufe auf die neueren Versionen umgeleitet. Wenn jemand mit dem 10g-Client entwickelt hat, wird er nun mit dem 11-Client funktionieren.

Wenn Sie weitere Details benötigen oder andere Fragen beantwortet haben möchten, z. B. das Ein- oder Ausschalten des 32-Bit-Modus in Ihren .net-Assemblys, senden Sie mir eine E-Mail.

J Banken [email protected]

Viel Glück.

    
John Banks 23.02.2010 23:43
quelle
2

Wenn Sie keinen 32-Bit-Oracle-Client verwenden und 64 Bit installieren können, müssen Sie den 64-Bit-Client installieren und die Datei oracle.dataaccess.dll unter odp.net aus dem installierten Oracle-Client-Ordner entnehmen. Und Sie müssen diese DLL verwenden und den Verweis auf diese Datei anstelle von 32-Bit-DLL austauschen (was Sie wahrscheinlich für das Projekt / Lösung haben)

Wenn Sie ein anderes Bit von Oracle Client haben, wird es nicht funktionieren. Sie werden also Fehler bekommen. Hoffe das hilft.

Siehe Abbildung auf Oracle implementieren .Web.dll, Oracle.DataAccess.dll 64-Bit-Fehler unter Windows Server 2008 mit IIS 7.5 32-Bit deaktiviert

    
rlee923 01.07.2010 15:20
quelle
0

Wenn Sie die 32-Bit-Version von Oracle.DataAccess.dll verwenden, müssen Sie einen der folgenden Schritte ausführen:

a) Bereitstellen auf einem 32-Bit-Server oder

b) Stellen Sie die Bereitstellung auf einem 64-Bit-Server mit "Enable 32-bit applications" auf "true" ein.

Wenn Sie die 64-Bit-Version von Oracle.DataAccess.dll verwenden, müssen Sie einfach einen 64-Bit-Server verwenden.

Das Problem wird von Oracle verursacht, da es keine AnyCPU-Version von Oracle.DataAccess.dll anbietet (wahrscheinlich, weil es nicht verwaltete / native Teile hat)

    
Tod Thomson 06.09.2012 06:11
quelle
0

Wenn Sie Folgendes tun, funktioniert alles gut 1. Setzen Sie alle Ihre DLLs konsequent auf AnyCPU. 2. Stellen Sie sicher, dass die entsprechende Version der DLL auf dem Computer installiert ist, auf dem die ausführbare Datei ausgeführt werden soll (d. H. 32 Bit oder 64 Bit, d. H. Wie das Betriebssystem). 3. Ignoriere Compiler-Warnungen, dass die 64/32 Bit-Version verwendet wird, anstatt eine MSIL-Version

Die kompilierten Versionen können dann sowohl mit 32 als auch mit 64 Bit verwendet werden, solange die entsprechende Version der Oracle-DLL installiert ist.

    
akil 26.06.2013 17:03
quelle

Tags und Links