System.DllNotFoundException: невозможно загрузить DLL "oci" при развертывании в контейнере Docker Linux
Я пытался использовать https://github.com/tonyrapozo/System.Data.OracleClient для соединения с Oracle db. Мое основное приложение.net хорошо работает в vs2017 и IIS, но при развертывании в контейнере Linux и запуске части, которая получает соединение из базы данных, я получаю эту ошибку:
System.DllNotFoundException: невозможно загрузить DLL 'oci': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E) в System.Data.OracleClient.Oci.OciCalls.OciNativeCalls.OCIEnvCreate(IntPtr& envhpp, режим OciEnvironmentMode, IntPtr CTXP, IntPTR malocfp, IntPTRTRPTPTMTPT), IntPTRTPTMTFTFTRPTMTFTRPTMTFTRPTMTFTRPTMTFTRPTFTRPTMTFTRPTMTFTRPTMTFTRP)).
Когда я попытался снова запустить прогон, появилась ошибка:
System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта в System.Data.OracleClient.OracleConnectionPool.GetConnection () [0x00000] в: 0 в System.Data.OracleClient.OracleConnection.Open () [0x00000] в: 0
Любые предложения будут оценены.
обновление: я удалил https://github.com/tonyrapozo/System.Data.OracleClient и использовал https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core/, ошибка исчезла. Важно отметить, что при использовании Oracle.ManagedDataAccess.Core версии 2.18.3 необходимо установить переменную окружения с именем TZ для контейнера Docker Linxu, но в версии 2.12.0-бета3 TZ не требуется, подробности вы можете увидеть здесь.
1 ответ
Хотя зависимости показывают только netstandard 2.0
Я сомневаюсь, что пакет работает на .net core
линукс. Кажется, есть некоторые зависимости от .net famework
, Здесь также есть открытая проблема. Невозможно загрузить DLL "oci".
Также тот на ms docs
доступно только для .net framework
, Смотрите здесь: System.Data.OracleClient