Ich habe eine Testumgebung für einen Service, den meine Site verwendet, und eine Produktionsumgebung. In meiner Testumgebung habe ich ODP.net auf dem Server installiert. Dieser Dienst, der Oracle verwendet, scheint bis jetzt ziemlich glatt zu laufen. Ich habe anscheinend keinen Oracle Client, der auf diesem Server läuft. Auf der anderen Seite habe ich einen Server, der einen Oracle-Client hat, aber ODP.net scheint nicht installiert zu sein (ich bin dabei, die doppelte Überprüfung durchzuführen, aber das ist die Situation ab dieser SO-Frage). . Auf dem Produktionsserver bekomme ich diese Ausnahme:
%Vor%In beiden Servern habe ich die Oracle.DataAccess-DLL in den bin- und lib-Ordnern (glaube nicht, dass ich sie im lib-Ordner brauche, aber warum das Boot rockt ... Ich bin mir sicher, dass du dir eine gute Idee ausdenken kannst Grund, aber nicht gerade jetzt !!!). Meine Frage ist, muss ich ODP.net auf dem Produktionsserver installieren? Hat das irgendwelche Probleme gelöst, auf die Sie gestoßen sind? Ich habe einige SO Post gesehen, die sagen, dass dies ein ähnliches Problem für sie gelöst hat. Könnten Sie eine Vorgehensweise empfehlen? Danke!
Es gibt viele kleine Unterversionen des Oracle-Clients, und was wahrscheinlich passiert ist, dass die Oracle-Clients, die auf dem Rechner mit dem Fehler installiert sind, nicht genau die gleiche Version sind, aus der die Oracle.DataAccess.dll
-Datei stammt.
Am besten stellen Sie sicher, dass Sie genau das gleiche Installationspaket auf jedem Dev-Rechner und Server verwenden. Dies wird jede Fehlübereinstimmung vermeiden.
Als Alternative habe ich in der Vergangenheit versucht, dies zu lösen (und es ist vielleicht nicht das "beste", aber normalerweise funktioniert es für mich), auch zu kopieren die Datei OraOps11.dll
zu Ihrem \bin
-Verzeichnis zusammen mit der Oracle.DataAccess.dll
-Datei.
Erhalte die Datei von der gleichen oracle-Installation auf demselben Computer, auf dem du Oracle.DataAccess.dll
hast. Es sollte sich in einem Ordner befinden, der wie folgt benannt ist, je nachdem, wo Sie Oracle installiert haben und welche Version:
C: \ oracle \ produkt \ 11.1.0 \ client_1 \ bin \ OraOps11.dll
Ich hatte genau das gleiche Problem, ich habe versucht, so viel wie möglich zu kopieren, aber ohne Glück.
Am Ende musste ich "ODTwithODAC121012" (32bit) im Server installieren (Win 2008 R2 64bit).
Stellen Sie nach der Installation sicher:
Ich laufe mit demselben Problem in einem Windows 2012 Server, den ich Oracle 10.2.0.3 installiert hatte (die unterstützte Version von Oracle 10.2, die mit 64 Bit kompatibel ist) und stellte eine Website mit 10.2.0.1 Oracle Client bereit.
Ich habe versucht, alle Lösungen in diesem Post, aber der, der von mir arbeitete, war der letzte Punkt von Abdallah Antwort:
"Aktivieren Sie 32bit für den App Pool in IIS"
Natürlich musste ich auch meine Webapp mit der richtigen Oracle.Data.Access-Referenz (10.2.0.3)
bereitstellenSchließlich verwirrte mich die Fehlermeldung, weil es mich dazu brachte, geblendet zu werden, um das Versions-Problem zu lösen, aber das eigentliche Problem war, dass IIS nicht 32-Bit-App ausführen konnte.
Hoffe es hilft
Danke ... das hat mir geholfen, Zeit für die Konvertierung von 32 Bit auf 64 Bit unserer ASP.Net Anwendung zu sparen ...
In Details: APP-Server sucht nach Client-Bibliotheken, sogar wir verwenden Remoting-Komponente, um eine Verbindung zu ORACLE db ... mit ORACLE-Client 64 Bit ..
Die Exception, die ich bekam, wurde behoben, nachdem diese 5 DLLs in meinen app / bin-Ordner kopiert wurden
Fehlermeldung: Der Typinitialisierer für 'Oracle.DataAccess.Types.OracleString' hat eine Ausnahme ausgelöst.
Fehlerdetails: System.TypeInitializationException: Der Typinitialisierer für 'Oracle.DataAccess.Types.OracleString' hat eine Ausnahme ausgelöst. --- & gt; Oracle.DataAccess.Client.OracleException Der Provider ist nicht kompatibel mit der Version des Oracle-Clients bei Oracle.DataAccess.Client.OracleInit.Initialize () --- Ende der inneren Ausnahmestapelspur ---
Server-Stack-Ablaufverfolgung: bei System.Runtime.Serialization.FormatterServices.nativeGetUninitializedObject (RuntimeType-Typ) bei System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObject (ParseRecord pr) bei System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseMember (ParseRecord pr) bei System.Runtime.Serialization.Formatters.Binary ._ BinaryParser.ReadObjectWithMapTyped (BinaryObjectWithMapTyped-Datensatz) unter System.Runtime.Serialization.Formatters.Binary. _BinaryParser.Run () System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (HeaderHandler-Handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) bei System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (Stream serializationStream, HeaderHandler-Handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) bei System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (Stream SerializationStream, HeaderHandler-Handler, Boolean fCheck, IMethodCallMessage-MethodeCallMessage) bei System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage (IMessage msg)
Ausnahme bei [0] erneut ausgelöst: bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & amp; msgData, Int32 type)
Tags und Links .net oracle11g oracleclient