Ein Grund dafür, dass die Bindungsumleitung nicht funktioniert, ist, dass der Oracle.ManagedDataAccess-Anbieter eine andere Suchreihenfolge für DLLs hat als der nicht verwaltete Anbieter. Der nicht verwaltete Anbieter startet im Anwendungsverzeichnis und sucht dann im DLL-Pfad in der Registrierung, dann im DLL-Pfad in machine.config und dann im DLL-Pfad in web.config. Gemäß der Oracle-Dokumentation funktioniert die Suchreihenfolge für den verwalteten Anbieter folgendermaßen:
Der verwaltete Treiber verweist auf diese Assemblys in der folgenden Suchreihenfolge:
- Globaler Assembly-Cache
- Das bin-Verzeichnis der Webanwendung oder das EXE-Verzeichnis der Windows-Anwendung
- Das Unterverzeichnis x86 oder x64 basiert darauf, ob die Anwendung in 32-Bit- oder 64-Bit-.NET Framework ausgeführt wird. Wenn die Anwendung mit AnyCPU erstellt wird, verwendet ODP.NET die richtige DLL-Bitness, solange die Assembly verfügbar ist. Oracle empfiehlt, diese Methode zum Suchen abhängiger Assemblys zu verwenden, wenn Ihre Anwendung AnyCPU ist.
https://docs.oracle.com/de/database/oracle/oracle-database/12.2/odpnt/installODPmd.html#GUID-0E834EC7-21DF-4913-B712-2B0A07FD58FD
Um dieses Problem zu beheben, müssen Sie die Registrierung der GAC-Assembly aufheben oder einfach eine andere Version von Oracle.ManagedDataAccess in Ihre bin und web.config einfügen als die in GAC, wenn Sie sie nicht deinstallieren können.