System.DllNotFoundException: невозможно загрузить DLL «oci» при развертывании в контейнере Docker Linux - PullRequest
0 голосов
/ 24 декабря 2018

Я пытался использовать 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 * IntP * IntP, RTFRPTP)1006 * Когда я попытался снова запустить прогон детали, возникла ошибка:

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта в System.Data.OracleClient.OracleConnectionPool.GetConnection () [0x00000] in: 0 в System.Data.OracleClient.OracleConnection.Open () [0x00000] in: 0

Любые предложения будут оценены.

обновление: я удалил Система.Data.OracleClient и используется Oracle.ManagedDataAccess.Core , ошибка исчезла.Важно отметить, что при использовании Oracle.ManagedDataAccess.Core версии 2.18.3 необходимо установить переменную среды с именем TZ для контейнера Dox Linxu, но в версии 2.12.0-бета3 TZ не требуется, для подробностей вы можете увидеть здесь .

1 Ответ

0 голосов
/ 24 декабря 2018

Несмотря на то, что зависимости показывают только netstandard 2.0 Я сомневаюсь, что пакет работает на .net core linux.Кажется, есть некоторые зависимости от .net famework.Здесь также есть открытая проблема Невозможно загрузить DLL 'oci' .

. Также, файл на ms docs доступен только для .net framework.Смотрите здесь: System.Data.OracleClient

...