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

Другие вопросы по тегам