Mit zwei ODP.NET (ODAC) Versionen auf dem gleichen server
Vor einigen Monaten ein Kollege von mir installiert ODAC 11.106.21 in einem server mit XCOPY und dann entwickelte er zahlreiche Anwendungen, die Verwendung dieser client ohne Probleme (in der test-und Produktions-windows-Server).
Vergangenen Woche habe ich eine Anwendung entwickelt, unter ODAC 11.1.07.20. Als ich ihn fragte, installieren Sie diese neue version ODAC mit XCOPY in ein anderes Verzeichnis und dann meine Anwendung in der test-server, antwortete er mir, dass ich verwenden soll ODAC 11.106.21 da hätte er Probleme mit seinen Anwendungen.
Also ich würde gerne wissen:
1) Wenn es wirklich möglich ist, zwei verschiedene ODAC-Versionen in einem server.
2) Wenn die Antwort positiv ist, wie kann ich fest stellen Sie sicher, um mein Kollege, dass er keine Probleme mit seinen Anwendungen?
3) Wenn die Antwort positiv ist, ist dies notwendig, zu tun, irgendeine Art von Konfiguration in den server?
Dank!!
InformationsquelleAutor vizcayno | 2010-03-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mehrere Versionen von ODAC auf der gleichen Maschine, aber es gibt mehrere Dinge zu beachten, mit Bezug auf welche version verwendet werden, wird für jede Anwendung. Das gilt eigentlich für alle Baugruppen.
Die kurze Antwort ist, dass es zwei einfache Möglichkeiten, um sicherzustellen, dass Ihre Anwendung die genaue version von Oracle.DataAccess.dll Sie wollen, dass es zu (dies gilt in den meisten Fällen, wo alles andere ist default):
In Ihrem speziellen Fall, Ihre Kollegin haben können, ein berechtigtes Anliegen: Wenn seine Anwendungen, die derzeit installiert bekommen Oracle.DataAccess.dll aus dem GAC entfernt, und hatte er nicht die Spezifische Version auf True, wenn Sie dann installieren Sie die neue ODAC, seine Anwendungen werden beginnen, es zu verwenden (ich ' m vorausgesetzt, die neue Oracle.DataAccess.dll wird im GAC installiert zu haben),
Schön. Noch eine andere Frage. 64-bit-Client, implementiert mit beiden Plattformen, version 4.112.2 in den GAC. Neue apps verwenden 4.112.3 für EF-Funktionen, also die Idee war
bin
bereitstellen, trumpfen die olde GAC kopieren. Visual Studio nur Kopien der lokalen 32-bit. Nächste Idee war, die Datei zu überschreiben mit der 64-bit-version von 4.112.3. Es gibt mir die gleichen Fehler als wenn die Bibliothek nicht in das bin-an alle, wie ist es noch mit der älteren GAC 64 Bibliothek. Keine details oder Vorschläge? Ist es möglich für mich zu GAC bereitstellen alle 4 Bibliotheken (4.112.2 32/64, und 4.112.3 32/64)? DankInformationsquelleAutor Igby Largeman
Ist hier das problem nicht .NET dlls aber nicht verwalteten dlls.
Ich versucht zu machen, arbeiten zwei ASP.NET Anwendungen auf einem server. Man wird älter mit ODP.NET 9.x und die neuen mit den neuesten ODP.NET. Ich implementierte die neueste ODP.NET mit xcopy und fügte hinzu, die Pfade der PATH-Umgebungsvariablen für die neue ODP. Jetzt wird die alte Anwendung nicht funktioniert (wahrscheinlich versucht, neue dlls). Wenn ich entfernen Sie Pfade aus der PATH-variable, dann ist die neue app funktioniert nicht. Ich fand die Art und Weise, das es auf einem server unders IIS-und Oracle-Seiten, aber das hat nicht funktioniert. Vielleicht, weil ich nicht installieren neueste ODP.NET aber nur xcopied. Ich werde es versuchen.
Was Oracle sagt:
Link: http://www.oracle.com/technology/tech/windows/odpnet/faq.html
Viele Oracle-Anwendungen laufen auf Microsoft Internet Information Services (IIS). Zuvor, IIS war ein single-Prozess-Anwendung ohne die Möglichkeit, weisen Sie ein anderes System Pfad zu den einzelnen Laufenden web-Anwendung mit dem gleichen IIS-Instanz. Mit IIS 6 auf Windows Server 2003, IIS unterstützt mehrere Prozesse für die gleiche Instanz. Da jede Anwendung Ihren eigenen IIS-Prozess, jede web-Anwendung zugeordnet werden können, einem anderen System-Verzeichnis-Pfad mit seinen eigenen Oracle Home.
Microsoft-Dokumentation enthält Informationen, die auf IIS worker process isolation und Anwendungspools.
Einrichtung mehrere aktive Oracle-Häuser laufen, die gleichzeitig auf der gleichen IIS-server:
1) starten Sie IIS 6 im Arbeitsprozess-Isolationsmodus auf die Windows-Server-2003
2) Bereitstellen einer version des Oracle-Clients auf einem application-pool und die zweite version an einem anderen Anwendungspool. Zum Beispiel, können Sie Oracle-Client 9.2.0.2 und ODP.NET 9.2.0.2 verwendet werden, die von einem Anwendungspool. Und Oracle Client 9.2.0.4 und ODP.NET 9.2.0.4 eingesetzt werden können, von einem anderen Anwendungspool. Sie werden nicht in der Lage, zwei aktive Oracle-Häuser in der selben application pool. Jeder aktive Oracle Home werden müssen, in einem anderen pool.
3) Legen Sie das DLL-Verzeichnis für jeden worker-Prozess zu, verwenden Sie die entsprechende Oracle-Home-Verzeichnis des client gespeichert werden. Um dies zu tun, in jedem ASP.NET Anwendung, rufen Sie SetDllDirectory(directory_name) früh im Lebenszyklus der Anwendung vor jeder Oracle-DLLs aufgerufen werden. Die SetDllDirectory input-variable ist die Oracle-Home-Verzeichnis bin des ODP.NET version verwendet. Hinweis: SetDllDirectory ist ein nicht verwalteter Anruf.
InformationsquelleAutor Peri