Ich fühle Ihren Schmerz, habe gerade etwas Ähnliches in einer Einsatzsituation durchgemacht. Sie haben wahrscheinlich mehrere Clients installiert, und Ihre Umgebung ruft DLLs für ältere Versionen ab (selbst wenn Sie eine neueste oracle.dataaccess.dll haben, auf die in Ihrem Projekt korrekt verwiesen wird). Dies in Ihrer Entwicklungsumgebung zu beheben, ist eine Sache, ein Produktbereitstellungsserver eine andere. Ich bin mir nicht sicher, wie Ihre Bereitstellungssituation aussieht, aber hier ist, was für mich funktioniert hat.
Nachdem ich Probleme hatte, odp.net in einem vorhandenen Oracle Home zu aktualisieren, ein neues Oracle Home hinzuzufügen usw., fand ich, dass der einfachste Weg, alles zu reparieren, darin besteht, den neuesten odac mit Xcopy-Bereitstellung von Oracle, und folgen Sie der Readme-Datei (und siehe hier für einen älteren Artikel dazu auch). Grundsätzlich führen Sie eine install.bat-Datei aus, um sie lokal einzurichten (in einem separaten Ordner, meiner war c:\oracle_odac), und ändern dann Ihre Projektreferenz so, dass sie auf die oracle.dataaccess.dll in diesem neuen Ordner verweist (ich habe 4 anstelle von 2.x), und fügen Sie die bin-Verzeichnisse des neuen Ordners vor Ihrem Pfad hinzu (c:\oracle_odac\bin und c:\oracle_odac\odp.net\bin\4). Auf Ihrem Bereitstellungsserver müssen Sie nur den gesamten Ordner c:\oracle_odac kopieren (über xcopy oder wie auch immer) und den Pfad einrichten.
Trotzdem warte ich gespannt auf die Produktionsfreigabe des vollständig verwaltet odp.net von Oracle (jetzt in der Beta).
BEARBEITEN:Nur um hinzuzufügen, dass Sie vermeiden können, mit PATHs herumzuspielen, wenn Sie in Ihrer App- oder Webkonfigurationsdatei den dllpath einrichten. Zum Beispiel:
<configuration>
...
<configSections>
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
...
<oracle.dataaccess.client>
<settings>
<add name="DllPath" value="c:\oracle_odac\bin"/>
</settings>
</oracle.dataaccess.client>
...
Dadurch werden andere Einstellungen wie Registrierung oder machine.config überschrieben. Und es ermöglicht, dass mehrere odp.net-Konfigurationen friedlich existieren und dass jede App auf die Version verweist, die sie auf demselben Server benötigt.