Ich versuche eine .NET-Anwendung auszuführen, die System.Data.OracleClient
auf einer Win7 x64-Workstation verwendet. Auf der Arbeitsstation ist ein 32-Bit-Oracle-Client installiert, der zu folgender Fehlermeldung führt:
Beim Versuch, Oracle-Client-Bibliotheken zu laden, wurde BadImageFormatException ausgelöst. Dieses Problem tritt bei dem Ausführen in dem 64-Bitmodus mit den 32-Bit Oracle-Client-Komponenten auf, die installiert werden.
Das ist also meine lange Reise von Versuchen und Misserfolgen:
System.Data.OracleClient
) und sah, dass DllPath verweist auf die korrekte x64-Installation von ODAC. Wenn meine Anwendung also System.Data.OracleClient
nicht verwendet hat, sollte sie funktionieren, b aber da sie diese verwendet, ist sie immer noch fehlgeschlagen. Nachdem ich die erste Antwort von b_levitt bekommen habe, habe ich versucht und die folgenden Zeilen zu der Global.asax bei Application_Start
hinzugefügt:
C: \ OracleProducts \ Odac-11.2.0.2.1-x64 ist, wo ich die ODAC 64-Bit xcopy-Version installiert habe. Kein Erfolg.
Ich habe sogar versucht, darauf aufmerksam zu machen erzwinge meine .NET-App ohne Erfolg in den 32-Bit-Modus , aber das ist etwas anderes. Ich brauche eine zukunftsweisende Lösung, die 64bit bedeutet.
Ihre # 5 sollte funktionieren, aber Sie müssen auch die Umgebungsvariable ORACLE_HOME festlegen. Ich habe dies viele Male einschließlich kürzlich mit der sehr xcopy Installation, die Sie verwenden, getan. Bitte schauen Sie sich meine Erfahrungen mit der xcopy-Installation an und lassen Sie mich wissen, was Art von zusätzlichen Fehlern, die Sie bekommen.
In meinem Fall habe ich es für asp.net eingerichtet, aber Winforms ist noch einfacher. Sie können ein cmd-Fenster öffnen, den Befehl "set" verwenden, um sowohl die Umgebungsvariablen PATH als auch ORACLE_HOME festzulegen, und dann Ihre App über das gleiche cmd-Fenster ausführen. Sobald Sie die Fehler behoben haben, können Sie die Environment.SetEnvironmentVariable verwenden, um diese in Ihrem Code festzulegen.
Ich vermeide es, den Oracle-Client auf Client-Rechnern zu installieren, indem ich die gesamte Geschäftslogik über Web-Services abwickle. So brauche ich nur die Oracle-Komponenten auf dem Webserver.
Ich hatte das gleiche Problem wie du. Die meisten meiner Antworten habe ich über Oracle-Foren und hier bei stackoverflow gefunden. Ich kann keine Links als Referenz veröffentlichen, aber ich kann Ihnen einige Dinge zum Ausprobieren geben.
Sehen Sie, ob die Ausnahme verschwindet.
In Kürze wird Microsoft die Oracle-Datenprovider-Unterstützung (in ADO.NET) einstellen Es funktioniert derzeit mit .NET 4, aber es ist eine gute Idee, die nativen Oracle-Treiber zu testen.
Tags und Links windows-7 .net-4.0 64bit oracle11gr2 system.data.oracleclient