0

我有一个 .net 核心应用程序,我必须使用 System.Data.OracleClient.dll 来连接 oracle db。

当我在 VS2017 中运行它时一切正常,但是当我发布并尝试运行连接到数据库的部分时,我收到一个错误:

System.DllNotFoundException:无法加载 DLL 'oci':找不到指定的模块。(HRESULT 异常:0x8007007E)在 System.Data.OracleClient.Oci.OciCalls.OciNativeCalls.OCIEnvCreate(IntPtr& envhpp,OciEnvironmentMode 模式,IntPtr ctxp,IntPtr malocfp,IntPtr ralocfp,IntPtr mfreep,Int32 xtramem_sz,IntPtr usrmempp)

我是否缺少某种 IIS 模块?我在同一台 PC 上有 x64 位 oracle。

4

2 回答 2

0

对我来说,最后帮助了以下步骤:

  1. 从 ( http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html )获得 x86 Oracle Instant 客户端
  2. 将即时客户端文件夹添加到环境路径的第一个位置,以便它将位于所有其他 oracle 路径之前。
  3. 重新启动机器。
于 2017-11-29T09:44:01.307 回答
0

可能是你错过了 OciCalls 类调用的本机代码,可能是一些本机 dll 或类似的,或者它没有在它正在寻找的地方找到它,在任何情况下你都可以使用 Assembly Binding Log Viewer 来调试它以查看它在哪里探索和缺少什么。

于 2017-11-28T20:55:05.500 回答