Я использовал один оракул-клиент, и все было в порядке, но мне пришлось установить еще две версии Oracle. И это вызывает проблемы сейчас.
Я решил 1 путем изменения значений пути в переменных системной среды, ставя исходный путь Oracle раньше других. Но все еще борется с 2, я просмотрел DLL-загрузку Process Explorer. И это похоже на загрузку неправильных dll файлов оракула, как один из 11.2, а другой из 12.1.
Конечно, я могу попытаться исправить это, удалив все эти оракулы и переустановить только один. Но я должен держать эти 3 для разных настроек разработки.
Как я могу исправить эти проблемы пути оракула? Кто-нибудь знает?
В случае старого "неуправляемого" провайдера ODP.net состоит из управляемой части (oracle.dataaccess.dll) и неуправляемой части (почти всех других DLL в домашнем каталоге oracle). Когда файл oracle.dataaccess.dll загружен, он проходит следующий порядок поиска, чтобы найти неуправляемые DLL, которые ему нужны:
Oracle.DataAccess.dll ищет зависимые неуправляемые библиотеки DLL (такие как Oracle Client) на основе следующего порядка:
Directory of the application or executable. DllPath setting specified by application config or web.config. DllPath setting specified by machine.config. DllPath setting specified by the Windows Registry. HKEY_LOCAL_ MACHINE\Software\Oracle\ODP.NET\version\DllPath Directories specified by the Windows PATH environment variable.
Сначала я предполагаю, что у вас есть старая версия oracle.dataaccess.dll в каталоге bin. Самое простое исправление - указать конфигурационную переменную "DllPath" и указать на старый сайт oracle для этого сайта asp.net:
<configuration>
<oracle.dataaccess.client>
<add key="DllPath" value="C:\app\user\product\11.1.0\your_old_client\bin"/>
...
Еще одна вещь, которую вы могли бы попробовать, это удалить ее - таким образом, она может загрузить "лучшую" DLL из gac (даже если версия, которую вы установили, была более новой, установщик обычно устанавливает политики издателей для перенаправления любых ссылок, по крайней мере для того же основного версия). Я говорю, что только для того, чтобы дать представление о том, как избежать ситуации в будущем. У меня есть другой ответ на этот вопрос: qaru.site/questions/6389153/...
Эти сборки сохраняются в GAC.
Перейдите в C:\Windows\assembly
, выберите те сборки, которые хотите Uninstall
щелкните правой кнопкой мыши и выберите " Uninstall
. Эти сборки больше не загружаются вашей программой.
Если вам нужно переустановить их, они все еще находятся в папке Oracle, поэтому вы можете снова установить его с помощью gacutil
.